我从文本文件中读取后使用以下代码将文本文件的输入分解为标记:
String input;
while(true)
{
input = bin.readLine();
if (input == null)
{
System.out.println( "No data found in the file");
return 0;
}
break;
}
StringTokenizer tokenizer = new StringTokenizer(input);
然后:
for (int i=0; i < numAtt; i++)
{
attributeN[i] = tokenizer.nextToken();
}
我无法理解为什么attributeNames只获取文本文件第一行中的标记,而不是while(true)继续读取整个文件?还有一种方法可以避免while(true)和使用break来终止它吗?
答案 0 :(得分:1)
break
if (input == null) { }
之后while ((input = bin.readLine()) != null) {
//split input line here
}
打破了一段时间,因此您的代码只读了一行。
还有一种方法可以避免while(true)和使用break 终止它?
以这种方式做到:
,
另外,请考虑使用String#split()分割标记中的行。分隔符String attributeNames[] = input.split(",");
的示例:
{{1}}
答案 1 :(得分:0)
最好的方法是使用:
String splittedString[] = input.split("the separator");
Oracle推荐。
答案 2 :(得分:0)
您是否只是想从第一行获取令牌?如果是这样,您根本不需要while
循环。只需从开头删除while {
,然后从结尾删除break; }
。