java - 使用 try 和 catch 字符串输入

标签 java

我正在做的是要求用户输入一个月。我输入了ifelse 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/

相关文章:

java - maven命令中的-D是什么,例如-DgroupId或-DartifactId

java - @ManyToOne 属性上不允许使用 @Column(s)

java - 如何对对象列表应用范围标准?

java - 如何添加自定义 Java 命令行选项?

java - 计算selenium中 "li"元素的数量

java - 在映射中为每个键获取重复值

java - 如何在处理不同类的异步任务类中使用 databasehelper 类

java - 通过 Dagger 将 Presenter 注入(inject) Activity

适用于 Windows 7 的 Java native 库、printf

java - 通过删除 Java 中的前导零来缩短十六进制数