Java - 将字符串从 Scanner 转换为 int,反之亦然
Java - Converting String from Scanner to int and vice versa
我正在尝试从 Java 扫描仪获取字符串输入并将其用于几个不同的功能。首先,我希望它能够将输入作为文本(而不仅仅是数字)用于程序稍后的未写入方法。其次,我想将它转换为一个 int 值(如果用户使用具有 int 形式参数的不同方法(hasDupes)。
我目前是这样做的:
public static boolean hasDupes(int num){
boolean[] digs = new boolean[10];
while (num > 0){
if (digs[num % 10])
return true;
digs[num % 10] = true;
num /= 10;
}
return false;
}
public static String getGuess() {
boolean validGuess = false;
String userGuess = "";
Scanner sc = new Scanner(System.in);
userGuess = sc.next();
if (!(hasDupes(Integer.parseInt(userGuess))) || (Integer.parseInt(userGuess) < 1000))
validGuess = true;
return userGuess;
}
但是,当我输入一个非 int 类型的值时,它给我错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "nonIntText"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at Main.getGuess(Main.java:164)
我做错了什么?
当您尝试通过 Integer.parseInt 或任何方式将字符串转换为数字时,如果它不是有效数字,它可能会抛出 NumberFormatException。
public static String getGuess() {
Scanner scanner = new Scanner(System.in);
String text = scanner.next();
boolean isValid = false;
try {
// try to parse it to a number
double number = Double.parseDouble(text);
// now do something with number, call hasDupes()
isValid = true;
} catch (NumberFormatException ignored) {
// it is not a number
}
System.out.println("Is Valid '" + isValid + "'");
return text;
}
我正在尝试从 Java 扫描仪获取字符串输入并将其用于几个不同的功能。首先,我希望它能够将输入作为文本(而不仅仅是数字)用于程序稍后的未写入方法。其次,我想将它转换为一个 int 值(如果用户使用具有 int 形式参数的不同方法(hasDupes)。
我目前是这样做的:
public static boolean hasDupes(int num){
boolean[] digs = new boolean[10];
while (num > 0){
if (digs[num % 10])
return true;
digs[num % 10] = true;
num /= 10;
}
return false;
}
public static String getGuess() {
boolean validGuess = false;
String userGuess = "";
Scanner sc = new Scanner(System.in);
userGuess = sc.next();
if (!(hasDupes(Integer.parseInt(userGuess))) || (Integer.parseInt(userGuess) < 1000))
validGuess = true;
return userGuess;
}
但是,当我输入一个非 int 类型的值时,它给我错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "nonIntText"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at Main.getGuess(Main.java:164)
我做错了什么?
当您尝试通过 Integer.parseInt 或任何方式将字符串转换为数字时,如果它不是有效数字,它可能会抛出 NumberFormatException。
public static String getGuess() {
Scanner scanner = new Scanner(System.in);
String text = scanner.next();
boolean isValid = false;
try {
// try to parse it to a number
double number = Double.parseDouble(text);
// now do something with number, call hasDupes()
isValid = true;
} catch (NumberFormatException ignored) {
// it is not a number
}
System.out.println("Is Valid '" + isValid + "'");
return text;
}