我正在尝试使用Java在逗号分隔的文件中找到某个字符串。之后,我想在文件中打印下一个逗号分隔的值,但我不知道该怎么做。
import java.util.Scanner; 导入java.util。*;
公共类readinfile {
public static void main (String[] args) {
String filepath = "C://adi//test1.txt";
String searchTerm = "glove";
readRecord(searchTerm, filepath);
}
public static void readRecord(String searchTerm, String filepath) {
boolean found = false;
String clothing1 = "";
String clothing2 = "";
String clothing3 = "";
Scanner x = new Scanner((filepath));
x.useDelimiter("[,\n]");
while(x.hasNext() && !found) {
clothing1 = x.next();
clothing2 = x.next();
clothing3 = x.next();
if(ID.equals(searchTerm)) {
found = true;
x.close();
}
}
if (found) {
System.out.println(searchTerm + "was found in the text file");
} else {
System.out.println("Record not found");
}
}
}
我总是收到的错误消息是java.util.NoSuchElementException,这似乎是扫描仪的问题。我不确定如何解决此问题,希望能有所帮助。
答案 0 :(得分:1)
您的x.next()
循环中有三个while(x.hasNext())
。因此,如果循环开始时还剩下一两个项目,则循环将运行,并且您将尝试获得三个项目,这可能就是为什么您遇到该异常的原因。
一个简单但不是很好的解决方案是:
while(x.hasNext() && !found) {
if(x.hasNext()){clothing1 = x.next();}
if(x.hasNext()){clothing2 = x.next();}
if(x.hasNext()){clothing3 = x.next();}
if(ID.equals(searchTerm)) {
found = true;
x.close();
}
}
您仍然想对可能未分配clothing2
和clothing3
的可能性做些什么。
使用数组来完成此操作会更好,但是我现在没有时间对此进行解释。