Java 使用strinkTokenizer在文本文件中循环查找字符串
我试图循环一个文本文件,根据我的逻辑,它应该循环while,line不是null,然后在循环中的另一个while循环中,当一个变量不等于我的一个命令行参数时,它应该在该行中循环,然后它应该获取该行的第一个标记并将其添加到该变量中。但是每次我运行代码时,我都没有得到这样的元素异常,我不明白为什么Java 使用strinkTokenizer在文本文件中循环查找字符串,java,while-loop,stringtokenizer,Java,While Loop,Stringtokenizer,我试图循环一个文本文件,根据我的逻辑,它应该循环while,line不是null,然后在循环中的另一个while循环中,当一个变量不等于我的一个命令行参数时,它应该在该行中循环,然后它应该获取该行的第一个标记并将其添加到该变量中。但是每次我运行代码时,我都没有得到这样的元素异常,我不明白为什么 try { FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr)
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下一行
NoTouchElementException如果没有更多令牌,则会抛出该异常
这个标记器的字符串
按此代码
while(!id.equals(args[0])){
id = st.nextToken();
}
您的循环将持续到您的while条件while!id.equalsargs[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字符串应该是,在检查第一行上的任何标记之前,您正在阅读第二行。可能您想移动line=br.readLine;在内环之后。