Java 是否验证月份输入01和1?

Java 是否验证月份输入01和1?,java,if-statement,try-catch,bufferedreader,verify,Java,If Statement,Try Catch,Bufferedreader,Verify,我需要两个输入的int值。用户为1月份写入1或01。 所以它确实适用于1-12,但如果我写01,它会给我自己的错误文本对我来说,重要的是它是一个int值,我知道字符串是完美的 private static BufferedReader input= new BufferedReader(new InputStreamReader(System.in)); private Output output = new Output(); public static String inputText(

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

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;

}
private static BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
私有输出=新输出();
公共静态字符串inputText()引发异常{
返回input.readLine();
}
公共整数monatInput(字符串文本){
字符串monthNumber=“”;
布尔值=真;
同时(再次){
系统输出打印(文本);
再次=假;
试一试{
monthNumber=inputText();
int number=Integer.parseInt(monatZahl);
int monthLength=String.valueOf(monatZahl.length();
如果(数字=12){
再次=正确;
抛出新异常();
}否则,如果(月长>3){
再次=正确;
抛出新异常();
}
}捕获(例外e){
this.output.monatwrong输入;
}
}
int converter=Integer.parseInt(monatZahl);
回流转换器;
}

我希望你们能帮我验证这个问题。我看过很多关于for循环生成01位数字的帖子,但这与作为用户输入进行验证有点不同。

您会遇到自己的错误,因为您没有使用正确的输入:

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

另一件事,要验证您的输入,您只需检查您的数字是否在1和12之间,而不需要检查长度 如果您的月份是
>12
<1
,则您的月份是错误的,因为1和12是有效月份(不要使用
=
进行检查)


给1一个有效数字

我需要长度,因为如果我尝试键入01,它会抛出新的异常。是的,很抱歉,我只是试着翻译我的程序。但是还是不行,我写不出01-12。它适用于1-12,但我需要这两个功能。我希望我能澄清我的问题。@MonsterHunter.Dev它会抛出你的异常,因为你没有使用正确的输入另一件事检查我的编辑仔细阅读我的答案@MonsterHunter.Dev你必须检查
if(number<1 | | number>12){
而不是
if(number=12){
如果您使用
01
它将引发异常这是逻辑您的权利,好的,它工作正常谢谢您。您帮了我很多。
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");