java - 扫描仪只能使用一次

标签 java java.util.scanner user-input

我对 java 有点陌生,习惯用 Python 编写。因此,当涉及到获取用户输入时,我总是对执行此类任务需要多少行代码感到恼火。所以我尝试创建自己的类(class)来简化该过程。我想执行这样的操作:

input("This is written in the console: ")

控制台内部:

This is written in the console: |

这是到目前为止的代码:

public static String input(String text) {
    Scanner scanner = new Scanner(System.in);
    System.out.print(text);
    String x =  scanner.nextLine();
    scanner.close();
    return x;
}

当我使用该类一次时,一切正常,但是当我尝试再次使用它时,出现异常:

public static void main(String[] args) {
    input("Input: ");
    input("Input 2: ");
}

输出:

Input: blaaa
Input 2: Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at NumberConverter.input(NumberConverter.java:124)
at NumberConverter.main(NumberConverter.java:7)

我真的不知道为什么会这样。请帮助我,谢谢。

最佳答案

感谢“SomeJavaGuy”,我终于让它工作了:

public class NumberConverter {
    private static Scanner scanner = new Scanner(System.in);

    public static String input(String text) {
        System.out.print(text);
        String x =  scanner.nextLine();
        return x;
    }
    public static void main(String[] args) {
        input("Write your Input: ");
        input("Write another Input: ");
        scanner.close();
}

关于java - 扫描仪只能使用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47554134/

相关文章:

java - Hadoop Map Reduce 字数随机错误 : Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out

java - AopAlliance(Guice): Call another method from an intercepted method

java - 扫描仪仅读取文本文件的第一行

java - 如何检查输入是否为 int 且位于两个值之间

java - 如果我要求用户输入一个文件,而该文件不存在,如何在程序不停止的情况下继续询问文件名?

java - 二进制 XML 文件行 #52 : Binary XML file line #52: Error inflating class com. Askira.loopingviewpager.LoopingViewPager

java - 如何在不关闭 GUI 的情况下停止方法的执行?

java - Scanner 为什么要实现 Iterator<String>?

c++ - 出于不同目的重复读取由空格(或其他分隔符)分隔的 double 列表

javascript - JS + 用户输入 : One text input changes multiple ids/classes in the body