12个字符后的新行java

12个字符后的新行java,java,stringbuilder,Java,Stringbuilder,我有一个类,可以读取一个文件,修改它,并将其写入另一个文件。输出中的字符是正确的,唯一的问题是行的长度需要为12个字符。 我如何用我现有的代码实现这一点?(我在代码中我想这样做的地方写了一条注释) 我的输入文件:http://gyazo.com/13fe791d24ef86e29ab6a6e89d0af609 电流输出:http://gyazo.com/cc195c1d59a9d1fe3b4f2c54e71da8eb 我想要的输出:http://gyazo.com/04efcbb05c5d56b

我有一个类,可以读取一个文件,修改它,并将其写入另一个文件。输出中的字符是正确的,唯一的问题是行的长度需要为12个字符。 我如何用我现有的代码实现这一点?(我在代码中我想这样做的地方写了一条注释)

我的输入文件:http://gyazo.com/13fe791d24ef86e29ab6a6e89d0af609
电流输出:http://gyazo.com/cc195c1d59a9d1fe3b4f2c54e71da8eb
我想要的输出:http://gyazo.com/04efcbb05c5d56b6e28972feb8c43fb8
弦线;
StringBuilder buf=新的StringBuilder();
公共void readFile(){
BufferedReader reader=null;
试一试{
File File=新文件(“C:/Users/Sybren/Desktop/invotertestbestand1.txt”);
reader=newbufferedreader(newfilereader(file));
//弦线;
而((line=reader.readLine())!=null){
系统输出打印项次(行);
//buf.追加(行);
processInput();
}
}捕获(IOE异常){
e、 printStackTrace();
}最后{
试一试{
reader.close();
}捕获(IOE异常){
e、 printStackTrace();
};
}
}
public void processInput(){
buf.追加(行);
如果(buf.length()>7){
buf.追加(“-”);
}
/*如果*后跟*将其更改为a*/
对于(int index=0;index
这样做会有帮助吗

for (int i=13;i<buf.size();i+=13) {
  buf.insert(i, '\n');
  i++; // to account for the newline char just added
}
for(int i=13;i
for(int index=0;index

当您调用index+1时,循环末尾将出现java.lang.ArrayIndexOutOfBoundsException。每12个字符后打印一个换行符。代码不起作用,它与我的输出无关。答案将换行符添加到“buf”StringBuilder中。问题中的代码与“buf”和processInput()无关不返回任何内容。您的输出似乎只打印出输入,因此答案将不起作用。我的输入由processInput()更改,因此输出不会打印出输入。processInput()中的所有其他行除了您建议的行之外,都将执行。buf是正在对其进行编辑的变量。buf永远不会打印,也不会将行设置为其内容。在调用processInput()之前打印行,因此即使要更新行,您也不会在输出中看到它。writeFile()从未调用。如果我误解了您的问题,那么很抱歉,但在这种情况下,重新编写并简化代码示例会有所帮助。内容包含buf.toString和writeFile()在main中调用。您是对的,我首先打印输入,但我也会更改它并将其写入另一个文件。我没有得到异常,因为它查找两个*并将第一个替换为!并删除第二个。
for (int i=13;i<buf.size();i+=13) {
  buf.insert(i, '\n');
  i++; // to account for the newline char just added
}
for (int index = 0; index < buf.length(); index++) {
        if (buf.charAt(index) == '*' && buf.charAt(index+1) == '*') {
            buf.setCharAt(index, '!');
            buf.deleteCharAt(index+1);
        }    
}