首页 > 解决方案 > 我的扫描仪功能崩溃而不是返回输入数字(java)

问题描述

我创建了一个要求用户输入数字的函数。该函数检查它是否是一个正整数以及它是否是一个整数,并且应该返回该数字。

如果用户输入一个正整数,程序每次都会崩溃。我是 Eclipse IDE 的新手,不知道在哪里查找运行时错误日志。

我已经尝试过 return height.nextInt() 并删除了 z 变量,但没有用。(此功能适用于最终打印出金字塔的更大程序。)

package skener;

import java.util.Scanner;

public class MyClass 
{
    public static int z = 0;
    public static int userInput()
    {
        Scanner height = new Scanner(System.in);
        System.out.println("Please choose a number: ");
        while(!height.hasNextInt() || (height.nextInt() < 0))
        {
            //height = new Scanner(System.in);
            System.out.println("Wrong number, try again: ");
            height = new Scanner(System.in);

        }
        z = height.nextInt();
        height.close();
        return z;

    }
    public static void main(String[] args)
    {
        System.out.println(userInput());
    }
}

如果用户输入是 3,我希望得到返回 3,以便在另一个程序中使用。相反,程序只是终止,终端不提供任何错误消息,也不返回输入。

标签: javajava.util.scanner

解决方案


你的程序应该如下所示,

Scanner height = new Scanner(System.in);
        System.out.println("Please choose a number: ");
        z = height.nextInt();
        while((z < 0))
        {
            System.out.println("Wrong number, try again: ");
            z = height.nextInt();

        }

        return z;

在这里,我们在 z 中获取整数值,我们正在检查条件并返回它是否为正,否则我们将要求用户再次输入。请在 import java.util.Scanner 中使用 import scanner 模块;


推荐阅读