从具有字符串列表的文件中读取。文件中有三行,我试图打印它们,因为它们在文件中查看,但输出只打印第一行。 '女人'不应该打印。 “男人也不应该
public void readFile(String fileName) {
String gender;
String width;
String height;
String name;
String x;
String y;
try {
scanIn = new Scanner (new File (fileName));
this.scanIn.useDelimiter(", ");
} catch (FileNotFoundException | NumberFormatException exception) {
exception.getMessage();
}
while(this.scanIn.hasNext()){
gender = scanIn.next();
if(gender.equals("woman")){
width = scanIn.next();
height = scanIn.next();
x = scanIn.next();
y = scanIn.next();
name = scanIn.next();
System.out.printf("%s %s %s %s %s", width,height,x,y,name);
}
if(gender.equals("man")){
width = scanIn.next();
height = scanIn.next();
x = scanIn.next();
y = scanIn.next();
name = scanIn.next();
System.out.printf("%s %s %s %s %s", width,height,x,y,name);
}
}
}
文件看起来像
man, 20, 15, 55, 90, phil
woman, 30, 10, 5, 80, Sam
man, 320, 170, 10, 90, olie
输出应为
20, 15, 55, 90, phil
30, 10, 5, 80, Sam
320, 170, 10, 90, olie
而输出给了我
20, 15, 55, 90, phil
woman
答案 0 :(得分:2)
错误是因为当您使用分隔符为", "
时,扫描程序在遇到新行时不会停止。
因此,当它读取第一行时,它会将phil\nwomen
读作单个标记。所以你的循环会搞砸了。
要修复,您可以告诉它在", |\n"
上分隔,这也会删除换行符。
scanIn.useDelimiter(", |\n");
注意:您可能还想在printf()
对帐单的末尾添加换行符,否则您将在一行中获得整个输出