我正在尝试声明当您输入整数时终止。我只能制作一个继续整数的。我还在考虑尝试捕捉特定的错误女巫是NumberFormatExeption
,除了我不能很好地解决这个问题
这是我的代码:
import javax.swing.JOptionPane;
import java.lang.NumberFormatException;
public class Calc_Test {
public static void main(String[] args) throws NumberFormatException{
while(true){
String INT= JOptionPane.showInputDialog("Enter a number here: ");
int Int = Integer.parseInt(INT);
JOptionPane.showConfirmDialog(null, Int);
break;
}
}
}
[编辑] 我清理了我的代码,并在堆栈溢出的朋友的帮助下想出了这个。这是代码:
import javax.swing.JOptionPane;
public class Calc_Test {
public static void main(String[] args){
while(true){
String inputInt= JOptionPane.showInputDialog("Enter a number here: ");
if(inputInt.matches("-?\\d+")){
JOptionPane.showConfirmDialog(null, "\"" + inputInt + "\"" + " is a number");
break;
}
JOptionPane.showConfirmDialog(null, "\"" + inputInt + "\"" + " is not a number. Therefore, " + "\"" + inputInt + "\"" + " could not be parsed. Try again.");
}
}
}
答案 0 :(得分:2)
您可以将String#matches()
与简单的正则表达式一起使用,以查看输入是否仅包含数字:
while(true){
String input = JOptionPane.showInputDialog("Enter a number here: ");
if (input.matches("-?\\d+")) {
int intVal = Integer.parseInt(input);
JOptionPane.showConfirmDialog(null, intVal);
break;
}
}
正则表达式-?\\d+
表示可选减号,后跟一个或多个数字。您可以在Java教程Regular Expressions section中阅读有关正则表达式的更多信息。
请注意,我已将变量名称更改为以小写字母开头,以遵循Java命名标准。
答案 1 :(得分:2)
您需要将其放入try/catch
块中。另外,尝试为变量提供更好的名称。这是一个如何做到这一点的例子:
while (true) {
String rawValue = JOptionPane.showInputDialog("Enter a number here: ");
try {
int intValue = Integer.parseInt(rawValue);
JOptionPane.showMessageDialog(null, intValue);
break;
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "You didn't type a number");
}
}