java - 使用 Java 在循环中获取输入

标签 java input

我试图在循环中使用 scanner.nextLine(),但出现异常。 问题出在这部分代码。

        while(!sentence.equals("quit")){
        dealWithSentence(sentence, voc);
        System.out.println("Enter your sentence:");
        sentence = scanner.nextLine();
    }

有异常(exception):

Exception in thread "main" java.util.NoSuchElementException: No line found at java.util.Scanner.nextLine(Unknown Source) at il.ac.tau.cs.sw1.ex4.SpellingCorrector.main(SpellingCorrector.java:34)

这是我的完整方法代码:

    public static void main(String[] args) throws Exception{
    Scanner scanner = new Scanner(System.in);
    String filePath = scanner.nextLine();
    if (filePath.contains(" ")){
        scanner.close();
        throw new Exception("[ERROR] the file path isnt correct");
    }

    File file = new File(filePath);
    String[] voc = scanVocabulary(new Scanner(file));
    if (voc == null)
    {
        scanner.close();
        throw new Exception("[ERROR] the file isnt working");

    }


    System.out.println("Read " + voc.length + " words from " + file.getName());

    System.out.println("Enter your sentence:");

    String sentence = scanner.nextLine();

    while(!sentence.equals("quit")){
        dealWithSentence(sentence, voc);
        System.out.println("Enter your sentence:");
        sentence = scanner.nextLine();
    }
    scanner.close();

最佳答案

Scanner.nextLine() 的工作原理如下..

   String s = "Hello World! \n 3 + 3.0 = 6.0 true ";

   // create a new scanner with the specified String Object
   Scanner scanner = new Scanner(s);

   // print the next line
   System.out.println("" + scanner.nextLine());

   // print the next line again
   System.out.println("" + scanner.nextLine());

   // close the scanner
   scanner.close();
   }

这将为您提供以下输出

Hello World!
3 + 3.0 = 6.0 true 

所以基本上它开始扫描并跳过直到第一个换行符,然后它返回到目前为止跳过的任何内容作为输出。在您的情况下,如果您只有一个句子并且根本没有换行符 (\n),它将跳过整个长度并且永远不会找到新行。从而抛出异常...在句子中间添加一个换行符并查看异常是否消失

学分转到:http://www.tutorialspoint.com/java/util/scanner_nextline.htm

关于java - 使用 Java 在循环中获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33688799/

相关文章:

java - 解析 JTextField 输入时出现 NumberFormatException

java - 关于工厂模式的问题

java - 同步方法可以满足同步块(synchronized block)可以达到的所有目的吗?

java - 如何将 Java 模式转换为 Postgres 正则表达式

php - 将数据库中的值插入输入框中

c - 在c中读取字符串时内存覆盖

java - Spring 数据 : mongodb find query with optional "criterias"

java - 在Java中的BrowserMob中仅获取POST请求/响应

java - Java 程序的 JPen 替代品

java - 如何检查鼠标是否被压出 JFrame