我正在尝试遍历一个文本文件,根据我的逻辑,它应该循环,而line,不是null,然后在该循环的另一个while loop
内,它应该循环通过该行虽然变量不等于我的命令行参数之一,然后它应该采取该行的第一个标记并将其添加到该变量。但每次我运行代码时都没有这样的元素异常,我不明白为什么?
try {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line = br.readLine();
String id = new String();
StringTokenizer st = new StringTokenizer(line, ",");
while(line != null){
while(!id.equals(args[0])){
line = br.readLine();
id = st.nextToken();
}
}
} catch (FileNotFoundException e) {
System.out.println("file not found");
} catch (IOException e) {
System.out.println("not a string");
}
该文件看起来像这样:
第1行:118,s,m,p
第2行:111,s,m,c
答案 0 :(得分:0)
nextToken()
NoSuchElementException - 如果没有更多令牌,则抛出此异常 这个tokenizer的字符串
在此代码中
while(!id.equals(args[0])){
id = st.nextToken();
}
您的循环将继续,直到您的while条件(while(!id.equals(args[0]))
)失败。因此,请在args[0]
之前检查id
String line ="";
String id = new String();
while((line = br.readLine())!= null){
StringTokenizer st = new StringTokenizer(line, ",");
while(!id.equals(args[0])){
id = st.nextToken();
}
}
,然后再将其打印到控制台上。
稍微修改一下代码
118, s, m, p
您的文件包含,
.. ", "
之后的空格,所以我猜您的tockenizer字符串应为{{1}}