java - 验证月份输入 01 和 1?

标签 java if-statement try-catch bufferedreader verify

我需要两个输入的 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;

}

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

最佳答案

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

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 一个有效的号码

关于java - 验证月份输入 01 和 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43822511/

相关文章:

java - 使用监听器和鼠标指针位置来检查指针是否在圆内

java - 使用 IPv4 的套接字通信

node.js - Express 和异步/等待 : shall I wrap the lot with try/catch?

java - 如何在 if 语句中使用这个 boolean 值?

javascript - JS : Loop with multiple conditions

mysql - MySQL查询错误“非法小时值”导致Google Apps脚本中的循环和写入问题

try/catch 后的 Java 返回类型

java - 应用程序在 1.6 上完美运行,但为什么我在运行 1.6 的 Xperia X10 上收到 java.lang.VerifyError 错误?

java - 在 Eclipse 中获取所有包的 Bundle []

MySQL 查询删除连字符重复项