所以,我有两个字符串(line和objectCode)
我想首先打印行,然后根据行的长度打印一些空格,然后打印objectCode。 (这样所有的objectCodes都排成一行。
我试过了,但输出如下:
0000 FIRST ST RETADR,LX 172028
0003 LD BX,#LENGTH 692028
0006 CLOOP +JSUB RDREC 03100000
objectCode是每一行中的最后一个数字(172028),因为你可以看到它们没有像我希望的那样排列。
所以,从本质上讲,我想要的是:
0000 FIRST ST RETADR,LX 172028
0003 LD BX,#LENGTH 692028
0006 CLOOP +JSUB RDREC 03100000
我似乎无法弄清楚如何获得它。谢谢。
修改的
我尝试过:
首先尝试(这应该是有用的):
String write = String.format("%-45s%s", line, objectCode);
fw.write(write + "\n"); //Using a FileWriter
第二次我尝试了(作为最后的努力):
fw.write(line);
int numOfSpaces = 40 - line.length(); //arbitrary number to check if this works
for (int spaces = 0; spaces < numOfSpaces; spaces++) {
fw.write(" ");
}
fw.write(objectCode);
我认为它会为更长的线长打印更少的空间..但它似乎没有用。
修改的
我已经找到了问题,但我不知道如何解决它。
问题是在程序的早期我修剪了每个线变量(修剪了前面和后面的空白区域),所以我可以自己得到每个单词。
所以,我有:
line = input.nextLine();
words[] = line.trim().split("\\s+"); //Splitting by white space
我认为trim()方法在这里是我的问题......但是,我需要它才能完成程序的目的。
答案 0 :(得分:0)
好吧所以我想出来并想发布答案以防其他人遇到这个问题。
所以,就像我说的那样,问题是我正在根据空白修剪线变量(为了让行中的每个单词分开):
String line = input.next
String[] words = line.trim().split("\\s+"); //Get each word by itself
问题是在程序的后期我想在这一行之后打印一些东西。并且没有办法获得正确的线条长度,因为所有的空格都消失了:
0000 FIRST ST RETADR,LX //line.length = 20 (no whitespace)
0003 LD BX,#LENGTH //line.length = 16 (no whitespace)
这两行都没有考虑长度上的任何空格。所以当我在这样的行之后写一些东西(使用文件编写器)
String write = String.format("%-30s, %s", line, objectCode);
fw.write(write + "\n");
我会得到:
0000 FIRST ST RETADR,LX 172028
0003 LD BX,#LENGTH 692028
这是因为当我为行分配30个空格(%30s)时,不考虑空格。
要解决这个问题,我不得不格式化行本身,我会格式化行中的每个单词:
String write = String.format("%-10s%-10s%-10s%-10s%", word1, word2, word3, word4);
fw.write(write + "\t" + objectCode + "\n");
所以现在这实际上给了我想要的东西,因为每条线都分配了相同的空间,并且它们保持对齐(-10s%等等)。
0000 FIRST ST RETADR,LX 172028
0003 LD BX,#LENGTH 692028