Java帮助异常处理 publicstaticvoidmain(字符串[]args){ int年龄=0; 而(年龄==0){ System.out.println(“你多大了”); 年龄=校验有效期(); } } 公共静态int-checkValidAge(){ 试一试{ 返回userInput.nextInt(); } 捕获(输入不匹配异常e){ userInput.next(); System.out.println(“输入整数”); 返回0; } } }
最近开始学习java(完全是初学者)。Java帮助异常处理 publicstaticvoidmain(字符串[]args){ int年龄=0; 而(年龄==0){ System.out.println(“你多大了”); 年龄=校验有效期(); } } 公共静态int-checkValidAge(){ 试一试{ 返回userInput.nextInt(); } 捕获(输入不匹配异常e){ userInput.next(); System.out.println(“输入整数”); 返回0; } } },java,Java,最近开始学习java(完全是初学者)。 所以我有点困惑,当我输入数字时,这会导致循环中断,而当我输入字符时,循环不会中断,所以这并不意味着相反。 只是想创建一些捕获错误并允许您重试的内容。正如您的代码所写: while(年龄=0) 当您的输入是 整数(不等于0),比如说3: 函数checkValidAge()返回3并将3分配给age, 由于局部变量age=3,它当然会中断while循环,因为a==0是false 字符 您输入一个字符,函数checkValidAge()将引发inputmasch
所以我有点困惑,当我输入数字时,这会导致循环中断,而当我输入字符时,循环不会中断,所以这并不意味着相反。
只是想创建一些捕获错误并允许您重试的内容。正如您的代码所写:
while(年龄=0)
当您的输入是
- 整数(不等于0),比如说3:
函数
返回3并将3分配给checkValidAge()
,age
由于局部变量
,它当然会中断while循环,因为age=3
是false李>a==0
- 字符
您输入一个字符,函数
将引发checkValidAge()
,并且inputmaschException
返回值为checkValidAge()
0
然后将返回值
分配给局部变量0
,这意味着age
。 此时,age=0
返回true,并满足while循环继续的要求age==0
- 任何有符号值(例如:-63)李>
- 任何低于合理最低年龄的无符号值:(ex:18)。多少岁 要使用您的应用程序,用户是否需要被访问。a会是1吗 岁使用你的应用程序
- 超过合理最长期限的任何无符号值:(ex:125)。这个星球上有史以来最长寿的人活到了122岁
不,这是正确的方法。提示循环的整个思想是获取一个有效的整数值。如果提供的数据无效,则会通知用户并从验证方法返回0,以便提示循环继续并向用户提供相同的提示,以便重试 由于验证是在用户输入上进行的,因此,对于这个特定的年龄提示,您可能应该一直使用它。可以提供许多应视为无效的整数,例如:
public static int checkValidAge(int min, int max) {
int ageValue = 0;
try {
ageValue = userInput.nextInt();
if (ageValue < min || ageValue > max) {
throw new InputMismatchException();
}
}
catch(InputMismatchException e) {
System.out.println("Invalid age supplied! (" + ageValue + ")");
ageValue = 0;
}
userInput.nextLine(); // consume ENTER
return ageValue;
}
公共静态整数校验有效性(整数最小值,整数最大值){
int ageValue=0;
试一试{
ageValue=userInput.nextInt();
如果(年龄值<最小值| |年龄值>最大值){
抛出新输入失配异常();
}
}
捕获(输入不匹配异常e){
System.out.println(“提供的年龄无效!(“+ageValue+”));
年龄值=0;
}
userInput.nextLine();//输入
返回值;
}
您在哪里定义了userInput?如果您输入数字0,它不会导致循环中断,对吗?对不起,我的坏消息,我还以为是另一种情况。谢谢您执行了额外的步骤并展示了我可以做的事情。