嗨,这是我的代码的一部分,当我尝试运行此程序时,它总是抛出java.util.NoSuchElementException。在行String a = sub.next();.有人可以告诉我如何解决这个问题吗?
while(s.hasNextLine())
{
String line = s.nextLine();
Scanner sub = new Scanner(line);
String a = sub.next();
if(a.equalsIgnoreCase(word))
{
replyMessage = line;
break;
}
else if(word.equals(" ") || word.isEmpty())
{
replyMessage = "please give a word!";
}
else
{
replyMessage = "Can not find this word";
}
}
答案 0 :(得分:1)
如果我们能够看到如何填充s,那将更容易提供帮助。
if(word.equals(" ") || word.isEmpty())
在逻辑上等同于
if(word.trim().isEmpty())
并且更容易输入和理解。
修改
顺便说一下,你只关注每一行的第一个元素。您需要一个嵌套循环来查看行中的每个元素,这些元素也应该处理未找到元素的问题。
while(s.hasNextLine())
{
String line = s.nextLine();
Scanner sub = new Scanner(line);
while(sub.hasNext())
{
String a = sub.next();
if(a.equalsIgnoreCase(word))
{
replyMessage = line;
break;
}
else if(word.equals(" ") || word.isEmpty())
{
replyMessage = "please give a word!";
}
else
{
replyMessage = "Can not find this word";
}
}
}
答案 1 :(得分:0)
问题在于以下代码
String line = s.nextLine();
Scanner sub = new Scanner(line);
String a = sub.next();
你需要检查sub是否有下一个元素,就像你对s
一样添加类似于此
的if语句if(sub.hasNext()){
String a = sub.next();
此外,你需要做一些事情,因为你当前的程序没有下一行