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