当前位置: 首页 > 知识库问答 >
问题:

从键盘读取数据时的异常

臧亦
2023-03-14

我是Java新手,我试图从键盘读取数据,但我遇到了一个异常,我不知道为什么以及如何修复它。

导入java。util。扫描仪;

    public class Test {
        public static void main(String[] args) {
        Test r = new Test();
        
        System.out.println("Type a int number      : " + r.readInteger());
        System.out.println("type a double number: " + r.readDouble());
    }

    public int readInteger() {
        Scanner input = new Scanner(System.in);
        int val = 0;
        
        while(true) {
            if(input.hasNextInt()) {
                val = input.nextInt();
                input.nextLine();
                break;
            }
            else {
                System.out.println("Invalid data type.");
                input.nextLine();
            }
        }

        input.close();

        return val;
    }

    double readDouble() {
        Scanner input = new Scanner(System.in);
        double val = 0;
        
        while(true) {
            if(input.hasNextDouble()) {
                val = input.nextDouble();
                input.nextLine();
                break;
            }
            else {
                System.out.println("Invalid data type.");
                input.nextLine();
            }
        }

        input.close();

        return val;
    }
}

免责声明:

[roger@archroger~]$java测试

3个

输入一个整数:3

无效的数据类型。

异常在线程"main"java.util.NoSuchElement异常:找不到行

在爪哇。util。扫描仪。nextLine(Scanner.java:1540)

在Test.read双人间(Test.java:44)

在测试中。main(Test.java:8)

共有1个答案

康锦
2023-03-14

当扫描仪的输入流是系统时,不要关闭扫描仪。在中。这将关闭标准输入以及scanner之类的语句。如果不检查行是否存在,nextLine()将抛出一个NoTouchElementException。您可以使用扫描仪进行检查。hasNextInt()如果另一个整数标记可用,然后尝试使用扫描仪获取另一行。getNextLine()不测试是否存在此行。使用扫描仪。hasNextLine()

 类似资料:
  • 主要内容:scanf()函数,连续输入,输入其它数据,scanf() 格式控制符汇总程序是人机交互的媒介,有输出必然也有输入,第三章我们讲解了如何将数据输出到显示器上,本章我们开始讲解如何从键盘输入数据。在C语言中,有多个函数可以从键盘获得用户输入: scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。 getchar()、getche()、getch():这三个函数都用于输入单个字符。 gets():获取一行数据,并作为字符串处理。 scanf(

  • 如何在Java中从键盘读取双变量?我试图解决这个问题,但没有成功。上面说: 线程“main”java中出现异常。util。java上的输入不匹配异常。util。扫描仪。throwFor(Scanner.java:864)访问java。util。扫描仪。下一个(Scanner.java:1485)是java。util。扫描仪。nextDouble(Scanner.java:2413)位于Main。m

  • 我已经花了几个小时阅读产品分支中的0和1。请在Firebase数据库有经验的人帮助我:(

  • 错误:javax.persistence.persistenceException:org.hibernate.exception.genericJDBcException:无法执行查询org.hibernate.exception.genericJDBcException:无法执行查询[SQL:335544721,HY000]org.firebirdsql.jdbc.fbsqlException

  • 我在尝试运行此程序时遇到以下异常。我正在使用在线编译器。甚至在读取字符串后尝试使用nextLine(),但没有成功。 我得到了以下异常:输入客户名称:在线程“main”java中输入客户id异常。util。NoSuchElementException:在java中找不到行。util。扫描仪。nextLine(Scanner.java:1585)位于Main。main(main.java:12)

  • 我试图使用spark streaming api从kafka读取json数据,当我这样做时,它会抛出java.lang.nosuchmethoderror:net.jpountz.lz4.lz4BlockinPutStream.init异常。堆栈跟踪是-