验证月份输入 01 和 1?

Validate Month input 01 and 1?

我需要两个输入的 int 值。用户为一月写 1 或 01。
所以它确实适用于 1 - 12,但如果我写 01,它确实会给我自己的错误文本。
对我来说重要的是它是一个 int 值,我知道 String 是完美的。

private static BufferedReader input= new BufferedReader(new InputStreamReader(System.in));
private Output output = new Output();


public static String inputText() throws Exception {
    return input.readLine();
}

public int monatInput(String text){
    String monthNumber= "";
    boolean again = true;
    while (again) {
        System.out.print(text);
        again = false;
        try {
            monthNumber = inputText();
            int number= Integer.parseInt(monatZahl);
            int monthLength = String.valueOf(monatZahl).length();


            if (number<=1 || number>=12) {
                again = true;
                throw new Exception();
            } else if (monthLength> 3) {
                again = true;
                throw new Exception();
            }
        } catch (Exception e) {
            this.output.monatWrongInput;
        }
    }
    int converter = Integer.parseInt(monatZahl);
    return converter;

}

希望大家帮我验证一下这个问题。我看到很多 post 关于生成 01 数字的 for 循环,但这有点不同然后验证为用户输入。

你自己的错误是因为你没有使用正确的输入:

monthNumber = inputText();
int number = Integer.parseInt(monatZahl);
//-----------------------------^^-----------this should be monthNumber

另一件事,要验证您的输入,您只需检查您的数字是否在 1 到 12 之间,您不需要检查 lenght
如果是 > 12< 1 你的月份是错误的,因为 1 和 12 是有效的月份(不要检查 <=>=)。

int number = Integer.parseInt(monthNumber);

if (number < 1 || number > 12) {
    again = true;
    throw new Exception();
}

编辑

注意两者:

int i1 = Integer.parseInt("01");
int i2 = Integer.parseInt("1");

给1一个有效的数字