我正在寻找关于如何捕获用户输入的无效String的异常。对于整数输入,我有以下代码:
try {
price = Integer.parseInt(priceField.getText());
}
catch (NumberFormatException exception) {
System.out.println("price error");
priceField.setText("");
break;
但是我不知道字符串的特定异常,输入是一个简单的JTextBox,所以我能想到的唯一不正确的输入是用户是否在框中输入任何内容,这就是我要抓住的内容。
答案 0 :(得分:7)
if (textField.getText().isEmpty())
就是你所需要的一切。
或者
if (textField.getText().trim().isEmpty())
如果您还想测试空白输入,只包含空格/制表符。
您通常不会使用例外来测试值。测试字符串是否表示整数是规则的一个例外,因为String中没有可用的isInt()
方法。
答案 1 :(得分:1)
您可以使用以下方法检查priceField
是否包含字符串:
JTextField priceField;
int price;
try {
// Check whether priceField.getText()'s length equals 0
if(priceField.getText().getLength()==0) {
throw new Exception();
}
// If not, check if it is a number and if so set price
price = Integer.parseInt(priceField.getText());
} catch(Exception e) {
// Either priceField's value's length equals 0 or
// priceField's value is not a number
// Output error, reset priceField and break the code
System.err.println("Price error, is the field a number and not empty?");
priceField.setText("");
break;
}
当if语句为真时(如果priceField.getText()
的长度为0),抛出异常,这将触发catch-block,给出错误,重置priceField
和{{1代码。
如果if语句为false(如果break
的长度大于或小于0),它将检查priceField.getText()
是否为数字,如果是,则设置priceField.getText()
达到那个价值。如果它不是数字,则抛出NumberFormatException,这将触发catch-block等。
让我知道它是否有效。
快乐编码:) -Charlie
答案 2 :(得分:1)
如果您希望在Java虚拟机的正常操作期间抛出异常,那么您可以使用此
if (priceField.getText().isEmpty())
throw new RunTimeException("priceField is not entered.");
答案 3 :(得分:0)
你可以这样做
if (priceField.getText().isEmpty())
throw new Exception("priceField is not entered.");