如何限制用户只输入一个整数?

时间:2012-09-26 20:54:09

标签: java

首先,我想说这是一项家庭作业,我只是在寻找建议。不是答案!我非常有信心学习并善于编程,而这并非来自其他人从事你的工作。指出我正确的方向,将非常感谢!

请知道我在互联网上搜索了一个解决方案,但没有找到符合我需求的解决方案。我无法使用任何高级方法。

该程序允许用户输入范围的开始和结束编号。起始编号必须可以被10整除,并且结尾必须可以被10整除,并且不能与起始编号相同。用户仅限使用0到1000之间的数字,不允许输入键盘上的任何其他字符。因此,如果它们点击“a”或“1200”,程序应该循环返回,直到输入有效的条目。

目前我坚持只允许输入一个整数。我的代码的特定部分发布在下面:

while(errorLoop != true){
        System.out.println("Enter the Starting Number of the Range (ex. 10,70,100)");
        startNum = kb.nextInt();
        System.out.println("Enter the Ending Number of the Range (ex. 10,70,100)");
        endNum = kb.nextInt();
        if(startNum % 10 == 0 && endNum % 10 == 0){
            errorLoop = true;
        }else{
            errorLoop = false;
            System.out.println("Start and End of range must be divisible by 10\n");
            System.out.println("Please try again (ex. 10,70,100)\n");
        }
    }

我只发布了与问题相关的代码部分。如果您必须知道程序的要点,则数字范围将按素数排序并输出到表格格式,其中每一行以一个可被10整除的数字结束。非素数将打印为“ - ”。

实施例。 71 - 73 - - - - - 79 | 80 \ n然而它的范围却很大。

4 个答案:

答案 0 :(得分:3)

我建议您使用nextLine()代替nextInt()。然后,您可以首先确保它可以作为整数解析(检查Integer JavaDoc page),然后该数字符合您的要求。

修改
要处理输入不是数字的情况,您可以进入多个方向。我更喜欢在使用正则表达式进行实际解析调用之前检查输入。仅包含数字的String将与"^\\d+$"匹配(请查看this link以获得精彩的正则表达式教程),并且String API中有一个方便的方法。

答案 1 :(得分:0)

您可以随时使用正则表达式解析输入,以确保它们是数字:

int number = Integer.parseInt(kb.nextLine().replaceAll(”[^\\d]“, “”));

输入:

1blahblah2moretext3

产生号码:

 123

答案 2 :(得分:0)

编写一种方法,检查输入的数字是否为数字。

  boolean method(String num) {
       boolean retValue;
      try {
        // check out the Integer API for the methods related to parse an int
          retvalue=true;
        }
      catch(ParseException ex) {
         retvalue=false;
      } 
     return retvalue;    
   } 

答案 3 :(得分:0)

尝试在程序中使用以下异常,确保使用InputMismatchException并导入它。

   try {
        System.out.println("Enter the value of a"); 

        int a = scanner.nextInt();


        System.out.println("Enter the value of b"); 
        int b = scanner.nextInt();
        int c = a+b;
        System.out.println("The answer is " +c);
        } 


    catch (InputMismatchException exception) 
    //Add import java.util.InputMismatchException; at the top
        {
        System.out.println("Error - Enter a integer");
        }