我有这段代码可以计算指数示例3⁴= 81.0,并且该代码询问用户要输入多少个数字和指数,以及当用户输入数字和指数并且输入无效的字母时,该代码将捕获java.util.InputMismatchException并停止。是否有任何代码可以返回到输入数字并以指数形式再次输入?
我已经尝试了布尔值方法,但是它没有用,我正在搜索这件事,但没有人进行。
try {
String[] unicode = {"\u2070", "\u00b9", "\u00b2", "\u00b3", "\u2074", "\u2075", "\u2076", "\u2077", "\u2078", "\u2079"};
System.out.print("Enter how many Numbers and Exponent you want to enter: ");
int userNum = new Scanner(System.in).nextInt();
ArrayList<Integer> num = new ArrayList<>();
ArrayList<Integer> nums = new ArrayList<>();
for (int i = 0; i < userNum; i++) {
System.out.print("Enter a Number: ");
int userNumber = new Scanner(System.in).nextInt();
num.add(userNumber);
System.out.print("Enter the exponent: ");
int userExponent = new Scanner(System.in).nextInt();
nums.add(userExponent);
}
for (int i = 0; i < userNum; i++) {
double answer = num.get(i);
for (int x = 0; x < nums.get(i) - 1; x++) {
answer *= num.get(i);
}
System.out.print(num.get(i));
for (int x = 0; x < String.valueOf(nums.get(i)).length(); x++) {
char g = String.valueOf(nums.get(i)).charAt(x);
String h = String.valueOf(g);
System.out.print(unicode[Integer.parseInt(h)]);
}
System.out.println(" = " + answer);
}
} catch (InputMismatchException exception) {
System.out.println(exception+" Invalid Input. Numbers Only.");
}
}
我期望的是,当用户输入无效的输入时,程序将捕获java.util.InputMismatchException并将其打印并返回输入以再次输入
例如
输入数字:12
输入指数:asd
java.util.InputMismatchException
输入指数:123
答案 0 :(得分:1)
您应该创建一些验证方法,这些方法将返回boolean
,这表示验证成功。比起ValidationError
,您可以使用do while循环再次请求输入。像这样:
do {
System.out.print("Enter a Number: ");
String userInput = new Scanner(System.in).next();
} while (!validate(userInput));
num.add(Integer.parseInt(userInput));
如果唯一的限制是具有有效的int编号,则也可以在尝试读取int之前使用Scanner.hasNextInt()
mtehod。