【问题标题】:Trying to validate user input in java尝试在java中验证用户输入
【发布时间】:2014-10-03 02:15:11
【问题描述】:

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

我在论坛上看到过其中一些,我已经浏览了它们,试图做出一个工作,但我似乎做不到。

我需要创建一个程序,要求用户输入两个正整数。每次回答一个整数时,我都想验证以确保它是 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);
}
}
}

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

【问题讨论】:

    标签: java user-input do-while


    【解决方案1】:

    这里的问题是您试图将用户输入的任何内容作为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);
    }
    ...
    

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      使用nextInt() 捕获整数时使用InputMismatchException

          int num1 = 0;
          try {
             num1 = in.nextInt()
             if(num1 < 0) {
               System.out.println(num1 + " is not a positive integer");
             }
          } catch(InputMismatchException ime) {
              System.out.println(num1 + " is not a valid integer");
          }
      

      【讨论】:

        【解决方案3】:

        在输入字母时,您会收到错误,因为您使用 in.nextInt() 读取文本。

        尝试将您的代码放在 try/catch 块下-

        try{
             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);
             }
            }
            catch(InputMismatchException ime) {
                 System.out.println(" not a valid integer");
            }
        

        【讨论】:

          猜你喜欢
          • 2016-03-15
          • 1970-01-01
          • 1970-01-01
          • 2014-06-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多