2012-09-26 75 views
1

首先,我想说,这是一个家庭作业,我只是在寻找建议。没有答案!我非常有决心去学习和擅长编程,这不是来自别人做你的工作。指出我正确的方向,将不胜感激!如何限制用户只输入一个整数?

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

该程序允许用户输入范围的开始和结束编号。起始号码必须可以被十整除,最后必须可以被十整除,并且不能与起始号码相同。用户仅限使用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整除的数字结束。非素数将打印为“ - ”。

Ex。 71 - 73 - - - - - 79 | 80 \ n,然后继续大范围。

+0

提示:当有人输入非整数时会发生什么?你如何处理发生的事情? –

+0

为了将来的参考,作业问题应该标记为“作业”标签。我冒昧为您添加它。 –

+4

@JesseWebb家庭作业标签刚刚被弃用,所以添加它并不是最好的主意。见[这里](http://meta.stackexchange.com/questions/147100/the-homework-tag-is-now-officially-deprecated?cb=1) – Robin

回答

3

我建议您使用nextLine()而不是nextInt()。然后你可以首先确定它可以作为一个Integer来解析(检查Integer JavaDoc page),然后确认这个数字符合你的要求。

编辑
为了处理该输入是不是数字的情况下,你可以去在几个方向。我更喜欢使用正则表达式在实际解析调用之前检查输入。一个仅包含数字的String将匹配"^\\d+$"(检查出this link是一个很好的正则表达式教程),并且在String API中有一个方便的方法。

+0

感谢您的建议!我会发布代码,但我似乎无法使其在注释部分中工作= /。无论如何,我为num1 = kb.nextLine()添加了另一个变量。并更改了startNum = Integer.parseInt(num1)。该程序仍然有效,但如果我在输入整数时输入“a”,它仍然会出现。 – billabrian6

+0

对不起所有的不必要的编辑,按Enter键的坏习惯。我不经常使用这个网站。我正在尽我所能学会使用它。 – billabrian6

+0

@ billabrian6:增加了一些更多信息。 – Keppil

0

你总是可以用正则表达式解析您的意见,以确保他们的数字:

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

输入:

1blahblah2moretext3 

可生产数:

123 
0

编写方法检查输入的数字是否是数字。

​​
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"); 
     }