我在从文本文件中读取后使用以下代码将文本文件的输入分解为标记:
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来终止它?
if (input == null) { }
后的break
正在中断 while,因此您的代码只读取一行。
还有没有办法避免while(true)并使用break来 终止它?
以这种方式执行此操作:
while ((input = bin.readLine()) != null) {
//split input line here
}
此外,请考虑使用 String#split() 在标记中拆分行。分隔符,
示例:
String attributeNames[] = input.split(",");
最好的方法是使用:
String splittedString[] = input.split("the separator");
这是甲骨文推荐的。
你只是想从第一行获取代币吗?如果是这样,则根本不需要while
循环。只需从开头删除while {
,从结尾删除break; }
即可。