java - 尝试在java中验证用户输入

标签 java user-input do-while

对不起,大家,第一次在这里发帖,所以请告诉我是否有一些礼仪或我应该遵循的事情!

我在论坛上看到过一些这样的内容,我也浏览过它们,试图制作一个作品,但我似乎做不到。

我需要创建一个程序,要求用户输入两个正整数。每次回答一个整数时,我想验证它以确保它是 1) 数字和 2) 也是正数。如果不是,我应该终止该程序。到目前为止,我已经尝试过:

import java.util.Scanner;

public class Assignment4 {

    public static void main (String [] args)
    {
        Scanner in = new Scanner(System.in);
        System.out.println("Please enter two positive integers.");
        System.out.println("Please enter the first integer:");
        int num1 = in.nextInt();
    do {
        System.out.println("Invalid. ***End of Program***");
        System.exit(0);
        while (!in.hasNextInt()) {
            System.out.println("Invalid. ***End of Program***");
            System.exit(0);
                    }
        }while (num1 <= 0);
        }
    }
}

当我输入负数时,它有效,但由于某种原因,java只收到无效的错误输入,并且当我输入字母时不会运行。我也尝试过:

import java.util.Scanner;

public class Assignment4 {

    public static void main (String [] args)
    {
        Scanner in = new Scanner(System.in);
        System.out.println("Please enter two positive integers.");
        System.out.println("Please enter the first integer:");
        int num1 = in.nextInt()
        if (!in.hasNextInt()){
            System.out.println("Invalid integer. ***End of Program***");
            System.exit(0);
        }else if (num1 <= 0){
            System.out.println("Invalid negative number. ***End of Program***");
            System.exit(0);
}
}
}

它什么也没做。昨天我在这个问题上花了大约两个小时,今天又花了一个小时,在网上寻找其他解决方案。我无法使用任何 match 或 try/catch 语句,因为我还没有学会它们!任何见解都会很棒,因为我在这里疯了。

最佳答案

这里的问题是您试图读取用户输入的任何内容作为 int 值。

如果输入恰好不是整数,程序将返回 InputMismatchException

为了解决这个问题,我们将执行以下操作:

int num1, num2 = 0;

try {
    System.out.println("Please enter two positive integers.");
    System.out.println("Please enter the first integer:");
    num1 = in.nextInt();

    if(num1 < 0) {
        System.out.println("Invalid integer. ***End of Program***");
        System.exit(0);

    } else {
        System.out.println("Please enter the second integer:");
        num2 = in.nextInt();

        if(num2 < 0) {
            System.out.println("Invalid integer. ***End of Program***");
            System.exit(0);
        }
} catch(InputMismatchException e) {
    System.out.println("That is not an integer. ***End of Program***");
    System.exit(0);
}
...

希望这有帮助!

关于java - 尝试在java中验证用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26172379/

相关文章:

java - 获取jdk12中java.lang.reflect.Fields的声明字段

plsql - 清理作为动态 PL/SQL 命令一部分的用户输入

c++ - 将负数存储在 char 数组中(仍然没有所需/所需的解决方案)

c - 扫描一个变量并在 do while 循环中使用它

java - 数组的clone()和system.arracopy()在Java中创建两个具有不同引用的数组?

java - 通过写入 DataOutputStream 通过蓝牙向设备发送命令

javascript - 快速键入时,.keyup() 上的非拉丁字符替换不起作用

java - do while 循环问题

php - 使用 PHP 时,分配的变量在 do while 循环中不起作用

java - 如何获得在 WebSphere 上运行的基本身份验证?