For 循环 - 验证输入,程序崩溃 (.hasNextInt())
For loop - validating input, program crashes (.hasNextInt())
我正在 java 中编写一个程序,将用户使用 for 循环输入的 5 个数字(正整数)相加。
当给出正确的输入甚至给出负整数时,我已经设法让它工作,但是当输入非 int 时程序崩溃。
感谢您的帮助!
for (int i = 0; i < 5 ; i++ ) {
if (myScanner.hasNextInt()) {
x = myScanner.nextInt();
if (x < 0) {
System.out.println("Invalid input, enter again:");
x = myScanner.nextInt();
}
}
else {
System.out.println("Invalid input, enter again:");
x = myScanner.nextInt();// this works in the nested if but not here, why?
}
sum += x;
}
System.out.println("Sum is: " + sum);
}//end class
你检查扫描仪是否有下一个整数,然后,仍然要求一个它没有的整数...
这是更正后的版本:
for (int i = 0; i < 5 ; i++ ) {
if (myScanner.hasNextInt()) {
x = myScanner.nextInt();
if (x < 0) {
System.out.println("Invalid input, enter again:");
} else {
sum += x;
}
}
else {
// get whatever is on the scanner, since we know it isn't and int
String crud = s.next();
System.out.println("Invalid input "+crud+" enter again:");
}
}
InputMismatchException 被抛出,尝试从一个地方调用 x = myScanner.nextInt 的逻辑,
int count = 0;
while (true)
{
try
{
if (myScanner.hasNextInt())
{
x = myScanner.nextInt();
if (x < 0)
{
System.out.println("Invalid input, enter again:");
}
}
else
{
System.out.println("Invalid input, enter again:");
continue;
}
}
catch(Exception e)
{
System.out.println("Invalid input, enter again:");
continue;
}
count++;
sum += x;
if(count==5)break;
}
我正在 java 中编写一个程序,将用户使用 for 循环输入的 5 个数字(正整数)相加。 当给出正确的输入甚至给出负整数时,我已经设法让它工作,但是当输入非 int 时程序崩溃。 感谢您的帮助!
for (int i = 0; i < 5 ; i++ ) {
if (myScanner.hasNextInt()) {
x = myScanner.nextInt();
if (x < 0) {
System.out.println("Invalid input, enter again:");
x = myScanner.nextInt();
}
}
else {
System.out.println("Invalid input, enter again:");
x = myScanner.nextInt();// this works in the nested if but not here, why?
}
sum += x;
}
System.out.println("Sum is: " + sum);
}//end class
你检查扫描仪是否有下一个整数,然后,仍然要求一个它没有的整数...
这是更正后的版本:
for (int i = 0; i < 5 ; i++ ) {
if (myScanner.hasNextInt()) {
x = myScanner.nextInt();
if (x < 0) {
System.out.println("Invalid input, enter again:");
} else {
sum += x;
}
}
else {
// get whatever is on the scanner, since we know it isn't and int
String crud = s.next();
System.out.println("Invalid input "+crud+" enter again:");
}
}
InputMismatchException 被抛出,尝试从一个地方调用 x = myScanner.nextInt 的逻辑,
int count = 0;
while (true)
{
try
{
if (myScanner.hasNextInt())
{
x = myScanner.nextInt();
if (x < 0)
{
System.out.println("Invalid input, enter again:");
}
}
else
{
System.out.println("Invalid input, enter again:");
continue;
}
}
catch(Exception e)
{
System.out.println("Invalid input, enter again:");
continue;
}
count++;
sum += x;
if(count==5)break;
}