3 回答
TA贡献1801条经验 获得超8个赞
测试是否是int一个异常,如果不是则抛出异常
a=sc.nextLine();
Integer.valueOf(a); // throws NumberFormatException
// this is number so go to top of loop
continue;
} catch(NumberFormatException b) {
System.out.println("There is NO problem with your input");
// we can use `a` out side the loop
}
TA贡献1815条经验 获得超13个赞
使用该技术尝试解析用户作为 int 输入的内容。如果转换成功,这意味着他们输入了一个整数,你应该抛出一个异常,因为你说你不希望他们输入一个整数(我理解这意味着你不希望他们只输入一个数字序列)
我没有给你确切的答案/为你编写代码,因为你显然在学习 Java,这是一个学术练习。你的大学/学校对教授/评估我的编程能力不感兴趣,他们对你的感兴趣,所以我为你做你的工作对你没有任何价值:)
如果您在实施我的建议时遇到困难,请编辑您的问题以包含您改进的代码,我们可以再次提供帮助
作为旁注,我建议您将错误消息做得更好,以“出现问题”对用户来说,没有什么比被告知存在问题但不知道问题是什么或如何解决更令人沮丧的了。
TA贡献1866条经验 获得超5个赞
使用正则表达式可以最好地解决此问题,但由于您的要求是使用 try catch,因此您可以使用以下方法
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = null;
System.out.println("\n\nEnter the name");
try {
// try to get Integer if it is number print invalid input(because we
// don't want number)
sc.nextInt();
System.out.println("There is problem with your input");
}
//getting exception means input was not an integer
// if input was not an Integer then try to read that as string and print
// the name
catch (InputMismatchException b) {
a = sc.next();
System.out.println("You name is " + a);
}
}
添加回答
举报