首先,我想说这是一项家庭作业,我只是在寻找建议。不是答案!我非常有信心学习并善于编程,而这并非来自其他人从事你的工作。指出我正确的方向,将非常感谢!
请知道我在互联网上搜索了一个解决方案,但没有找到符合我需求的解决方案。我无法使用任何高级方法。
该程序允许用户输入范围的开始和结束编号。起始编号必须可以被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然而它的范围却很大。
答案 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");
}