我正在尝试循环访问一个文本文件,根据我的逻辑,它应该循环,而行不为空,然后在该循环内的另一个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");
}
该文件如下所示:
118行: 118, S, M, P
2号线: 111, S, M, C
nextToken()
NoSuchElementException--如果中没有更多标记,则会抛出此异常 此分词器的字符串
在此代码
while(!id.equals(args[0])){
id = st.nextToken();
}
您的循环将继续,直到您的 while 条件( while(!id.equals(args[0]))
( 失败。因此,请在 while 条件之前将它们打印在控制台上,id
检查您的args[0]
。
稍微修改一下代码
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 字符串应该", "