【发布时间】:2011-06-11 12:22:33
【问题描述】:
我试图找到答案,但找不到,也许我要问的问题有点奇怪,我想知道这里出了什么问题。 (对不起我的英语,它有点差,但我会尽力而为)
这是交易,我在java中使用一个方法返回一个int,该方法使用try catch来避免程序爆炸(请注意,我刚刚开始编程和java)
嗯,这个方法像这样使用 try catch:
public int safeEnter(String message, int min, int max) {
/**
* This method takes some parameters and validates the true enter of an int
* inside some ranges
*/
int aux;
String auxInt;
do {
auxInt = input.nextLine().trim();
try {
aux = Integer.parseInt(auxInt);
} catch (NumberFormatException ex) {
System.out.println("Enter a " + message + " between " + min + " & " + max);
aux = Integer.MIN_VALUE;
}
}
while(aux < min || aux > max);
return aux;
}
(所有这些代码都被翻译成英文^.^)
Weel,问题在于使用这种方法:
int month = safeEnter("month", 1, 12);
如果我给它一个 char 或一个单词而不是一个 int,这将验证问题,并将再次要求一个 int,这实际上按计划工作,但如果我给它一个 负数 我应该在它之前输入 2 以显示消息并再次询问数字,如果我给它一个 char 字符串或一个范围或范围外的 int 但蜜蜂是积极的,这不会发生。
您认为这里可能存在什么问题?因为我“认为”没关系,关于 Scanner 的一些我应该知道或我错过的东西??
最好, 毛里西奥
【问题讨论】:
-
请给出输入值和预期输出值 - 就像单元测试一样
-
对不起,我是第一次在这里问,而且我的英语不太好,你是什么意思?我告诉该方法验证一个 int 的输入,如果它收到一个字符串或一个字符,它将再次询问该数字....请解释一下,我会尽力而为