拥有此java代码并需要添加try / catch,以便在输入非数字字符时显示错误。我在哪里添加try / catch程序,以便显示错误:
package SumadeMatrices;
import java.util.Scanner;
public class SumadeMatrices {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Ingrese el Numero de Filas: ");
int rows = s.nextInt();
System.out.print("Ingrese el Numero de Columnas: ");
int columns = s.nextInt();
int[][] a = new int[rows][columns];
int[][] b = new int[rows][columns];
System.out.println("Ingrese la primera matriz");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
a[i][j] = s.nextInt();
}
}
System.out.println("Ingrese la segunda Matriz");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
b[i][j] = s.nextInt();
}
}
int[][] c = new int[rows][columns];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
c[i][j] = a[i][j] + b[i][j];
}
}
System.out.println("La suma de las dos matrices es:");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
System.out.print(c[i][j] + " ");
}
System.out.println();
}
}
}
答案 0 :(得分:3)
有两种可能的方法:
在第一种情况下,您需要为每个scanner.nextInt
添加一个try catch。在这种情况下,您需要重新输入数据。
// For each readInt
boolean inputed = false;
int myVariable;
while (!inputed)
try {
myVariable = scanner.nextInt();
inputed = true;
} catch (InputMismatchException e) {
System.out.println("The last input is not a number. Reinput");
}
}
在第二种情况下,您需要为整个函数添加try catch
try {
....
// whole function code
} catch (Exception e) {
System.out.println("An error has occured. Restart");
}
答案 1 :(得分:2)
Scanner#nextInt()
将抛出java.util.InputMismatchException
。您只需在发生时捕获它并显示有用的错误消息。
int value;
try {
value = scanner.nextInt();
} catch (InputMismatchException e) {
System.out.println("You dun goofed!");
}
这是一个更复杂的解决方案,在用户提供有效输入之前会一直询问。考虑将其添加到自己的方法中,每次需要新值时都可以调用它。
int value;
boolean hasValue = false;
while (!hasValue) {
try {
value = scanner.nextInt();
hasValue = true;
} catch (InputMismatchException e) {
System.out.println("You dun goofed!");
}
}
答案 2 :(得分:1)
扫描程序在读取后使用不同的方法转换字符串标记。无法转换时,方法会抛出InputMismatchException
。
因此,有一种方法可以通过捕获此异常来实现输入验证。
在你的情况下,它可能是这样的:
try {
a[i][j] = s.nextInt();
} catch (InputMismatchException e){
System.out.println("Invalid input");
}
方法抛出异常以允许您使用某些逻辑处理它们。在您的情况下,用户从键盘输入值到控制台,您决定在输入无效时该怎么做。例如,您可能只是中断所有输入过程,或者您可能要求重新输入。
此外,除了捕获异常之外,通常还有其他选项可以检查。如果Scanner
有hasNext()
个hasNextInt()
方法,那么您可以检查输入是否为int
,如果不是,则只需通过调用{{1}跳过它}}
scanner.next()
此外,您可以将此逻辑实现为您自己的方法,以避免代码重复。
while(!scanner.hasNextInt()){
scanner.next();
}
a[i][j] = scanner.nextInt();