【发布时间】:2017-04-23 06:13:19
【问题描述】:
我编写了一个简单的程序。它从用户那里获取两个整数并将奇数返回给用户。我验证它们以强制用户只输入整数。 当用户键入其他数据类型时,程序会给他我的自定义错误。直到现在,但是当发生这种情况时,用户必须从头开始输入输入。这意味着程序将用户带到第一个家。 这是我的主要课程:
package train;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Calculate cal = new Calculate();
Scanner input = new Scanner(System.in);
int number1 = 0;
int number2 = 0;
boolean isNumber;
do {
System.out.println("enter number1 please : ");
if (input.hasNextInt()) {
number1 = input.nextInt();
isNumber = true;
System.out.println("enter number2 please : ");
}
if (input.hasNextInt()) {
number2 = input.nextInt();
isNumber = true;
} else {
System.out.println("wrong number!");
isNumber = false;
input.next();
}
} while (!(isNumber));
cal.setNumbers(number1, number2);
cal.result();
input.close();
}
}
这是我的计算类,它返回奇数:
public class Calculate {
private int minNumber;
private int MaxNumber;
public void setNumbers(int min, int max) {
this.minNumber = min;
this.MaxNumber = max;
}
public void result() {
int count = 0; // number of results
ArrayList<Integer> oddNumber = new ArrayList<Integer>(); // array of odd numbers
// get odd numbers
for (int i = minNumber; i < MaxNumber; i++) {
if ((i % 2) != 0) {
oddNumber.add(i);
count++;
}
}
int i = 0;// counter for printing array
while (i < oddNumber.size()) {
if(i != oddNumber.size()){
System.out.print(oddNumber.get(i) + ",");
}else{
System.out.println(oddNumber.get(i));
}
i++;
}
// print result numbers
System.out.println("\nResult number : " + count);
// print number range
System.out.println("You wanted us to search between " + minNumber
+ " and " + MaxNumber);
}
}
【问题讨论】:
-
但是我发现接受的解决方案无法解决所提出的问题,就像第二个输入是
non-integer然后它会再次询问第一个输入,这是实际问题。您仍然接受了答案,所以如果我理解错误,请纠正我。
标签: java validation input