我正在编写一个代码,该代码从文件中读取文本,然后将其排序为最大特定宽度的行。
示例:包含“aaaa bbbb cccc dddd”的文本
指定的宽度为16
所以输出应该是
aaaa bbbb cccc //width is only 14, if dddd is added, it would be longer than 16.
dddd
我的方法:阅读文本并将其分配给字符串
Scanner input_OUT = new Scanner(new File("abc"));
PrintStream output = new PrintStream("abc");
.
.
while (input_OUT.hasNextLine()) {
str = input_OUT.nextLine();
}
String s = "";
while(input_OUT.hasNext()) { // get words if it still have
if (s.length() + input_OUT.next().length() > width) {
s = str.substring(0,s.length());
output.println(s);
str = str.substring(s.length()+1,str.length());
s = "";
}
else {
s += input_OUT.next();
}
}
虽然它编译。但该文件没有显示任何输出。我认为我的代码不对。我知道有stringbuild,string split,array的选项。但我现在可以这么做了。
答案 0 :(得分:0)
第一个问题是在这个循环中,假设从文件中扫描了多个东西,这种方法将不起作用。
String str;
while (input_OUT.hasNextLine()) {
str = input_OUT.nextLine();
}
您所做的只是将str重置为下一个扫描的元素。
更好的方法是将文件输入存储到字符串数组中。
String str;
String S[] = new String[#stringsInFile];
int i = 0;
while (input_OUT.hasNextLine()) {
str = input_OUT.nextLine();
S[i] = str;
i++
}
现在你所要做的就是操纵数组S [],然后输出到你的输出文件。
在评论中注意到你说你不能一个数组。让我们继续添加到S
,然后允许您对S
执行操作。方法:
String str;
String S = "";
while (input_OUT.hasNextLine()) {
str = input_OUT.nextLine();
S = S +" "+ str; //This will keep adding onto S until hasNextLine is false
}