为了账号安全,请及时绑定邮箱和手机立即绑定

如何从文件中读取多个字符,将字符乘以网格并打印回新文件

如何从文件中读取多个字符,将字符乘以网格并打印回新文件

慕慕森 2022-09-01 17:31:25
我正在尝试从文件中读取多个字符,使每个字符相乘,以便当我将其打印到新文件时,它们以网格状格式显示。    int num = 4;    String fileStr = "";    scnrIn.useDelimiter("zzzzzzzzz");    while(scnrIn.hasNextLine()) {        fileStr = scnrIn.nextLine();        char[] charArray = fileStr.toCharArray();        for(int i = 0; i < charArray.length; ++i) {            for(int j = 0; j < Math.sqrt(num); ++j) {                writer.write(charArray[i]);                for(int k = 1; k < Math.sqrt(num); ++k) {                    writer.write(charArray[i]);            }                writer.newLine();                writer.flush();        }        }    }}}如果我的 txt 文件包含字符 @#$,而我的多像素为 4,我希望打印新的 txt 文件:@@##$$@@##$$但相反,我得到:@@@@####$$$$我觉得这个问题与writer.newLine()有关。但是如果我把它拿走或注释掉,那么它就不会在网格中打印出来。我不确定如何解决在网格中打印新行的需求。
查看完整描述

1 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

您的问题与 for 循环的嵌套有关。如果按照代码执行的操作,则会在网格中写出一个当前字符,然后转到 .icharArray


相反,您应该做的是逐行并为每个字符打印出当前字符的列数,然后再转到新行。这主要需要切换两个最外部的 for 循环,然后修复调用 write 的频率。


以下是按预期工作的代码:


int num = 4;    

int cols = (int) Math.sqrt(num); //easier to read the code when stored in a variable

int rows = cols;


String fileStr = "";


scnrIn.useDelimiter("zzzzzzzzz");


while(scnrIn.hasNextLine()) {

    fileStr = scnrIn.nextLine();

    char[] charArray = fileStr.toCharArray();


    for (int i = 0; i < rows; i++) {

        for (int j = 0; j < charArray.length; j++) {

            char curChar = charArray[j]; //this is the current character we want to write out for the number of columns times


            for (int k = 0; k < cols; k++) {

                writer.write(curChar);

            }

        }

        writer.newLine(); //create a new line after every row

    }

    writer.flush(); //better to only flush output when fully done

}


查看完整回答
反对 回复 2022-09-01
  • 1 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信