while循环搜索中的NoSuchElementException

时间:2017-09-01 14:21:27

标签: java

嗨,这是我的代码的一部分,当我尝试运行此程序时,它总是抛出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";                
    }
}

2 个答案:

答案 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();

此外,你需要做一些事情,因为你当前的程序没有下一行