我正在做的是要求用户输入一个月。我输入了if
和else if
说出月份> 12 还是月份< 1 并重新要求用户输入月份。我尝试使用 try 和 catch 语句来捕获用户输入字符串并告诉他们输入月份。我的代码的问题是,当它捕获用户输入字符串时,它的命令行不断重复“请输入月份 1-12”并让用户重新输入月份。谁能阻止我遇到的问题。
我尝试插入 month.scan.nextInt()
进入catch
但我收到一个错误,我真的很困惑。
import java.util.*;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Price {
public static void main(String[] args) {
userInput();
}
public static void userInput() {
Scanner scan = new Scanner(System.in);
int month, day, year;
boolean i = true;
System.out.println("Please enter a month MM: ");
最佳答案
发生错误的原因是您的代码没有使用 catch
子句中的无效输入。您的程序尝试一次又一次地读取它,导致另一个异常。
按如下方式更改代码应该可以解决问题:
catch(InputMismatchException imme) {
System.out.println("Please enter a month 1-12");
scan.next(); // Ignore the invalid input
}
如果您想让您的代码对其他人更具可读性,请想出能够解释其用途的名称。例如,变量i
用于决定是否继续读取。将其重命名为 continueReading
将使您的循环更易于理解:
while (continueReading) ... // You do not need "== true" after a boolean variable
关于java - 使用 try 和 catch 字符串输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15581857/