Java作业分配- java.util.无此类元素异常:未找到行

ljsrvy3e  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(113)

我从自动化的JUnit 4单元测试软件中得到了一个错误,我的课程讲师使用该软件自动检查作业。
我们把草稿代码上传到云程序测试器,它会自动检查并给作业打分。
这是第一学期的第一周。我以前从来没有用Java写过代码。课程中也没有教if/else,while,循环,开关等,所以我认为使用这些是不好的(它们会出现在下一个模块中)。
我遵循了一个类视频教程,它在教程中没有抛出任何异常--所以我不知道发生了什么。
这个单元是关于变量,输入,打印输出,布尔,运算符,以及一些东西,比如包含,替换,等于等等。
注意:我可以根据讲师的要求在StackOverflow上提问。

错误为:java.util.NoSuchElementException:未找到行

测试软件中没有指定异常发生的行号,而且由于它不在我的IDE中发生,我不知道它在哪里。
我发现的其他解决方案需要while和其他我不应该使用的方法。
我的代码(如下)在学校提供的VSCODEIDE云中运行良好。

import java.util.Scanner;

public class ContainsAnyCase {

  public static void main(String[] args) {
    System.out.println("Type a word:\n");

    Scanner userInputWord = new Scanner(System.in);

    String word = userInputWord.nextLine();

    String wordlc = word.toLowerCase();

    System.out.println("Type a sentence:\n");

    Scanner userInputSentence = new Scanner(System.in);

    String sentence = userInputSentence.nextLine();

    String sentencelc = sentence.toLowerCase();

    boolean isContains = sentencelc.contains(wordlc);

    System.out.println(isContains);

  }
}

我想知道是否有人可以解释为什么会出现错误,以及是否有方法修复或避免错误,而无需进入未来模块的领域?此外,我仍在学习如何正确使用堆栈溢出。如果我问错了问题,请告诉我如何改进我的问题或帖子。谢谢。
我希望程序能告诉我这个词是否在句子中。在我的IDE中,它工作了。当我把它上传到JUnit 4时,它说java.util.NoSuchElementException:未找到行

kxe2p93d

kxe2p93d1#

这里有一个例子,只使用一个扫描仪的建议,在评论。
我还删除了小写的第二组变量;只需将输入直接转换为小写,并将其存储在原始变量中:

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    
    System.out.println("Type a word:\n");    
    String word = sc.nextLine().toLowerCase();

    System.out.println("Type a sentence:\n");
    String sentence = sc.nextLine().toLowerCase();

    boolean isContains = sentence.contains(word);
    System.out.println(isContains);
  }

如果你需要保留用户输入的内容,那么你可以只在调用contains()时转换为小写,如下所示:

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    
    System.out.println("Type a word:\n");    
    String word = sc.nextLine();

    System.out.println("Type a sentence:\n");
    String sentence = sc.nextLine();

    boolean isContains = sentence.toLowerCase().contains(word.toLowerCase());
    System.out.println(isContains);
  }

相关问题