我在netbeans中创建一个jTextField限制整数输入,我不知道该怎么做。 我是这样做的:
private void txtNameKeyReleased(java.awt.event.KeyEvent evt) {
try {
String j = (String) txtName.getText();
} catch ("Which Exception to Catch?") {
if (!txtAge.getText().isEmpty()) {
jOptionPane1.showMessageDialog(null,
"Please enter string values");
txtAge.setText(txtAge.getText().replaceAll("[^a-z]", ""));
}
}
}
我应该把什么放在捕获物上?
答案 0 :(得分:1)
您可以使用regular expression针对String.matches()
测试输入,以确保它只是数字(无需捕获NumberFormatException
之类的异常 - 这可能被视为不良做法激发例外来验证条件。)
String j = txtAge.getText();
if (!j.matches("\\d+")) {
// It is not a number
}
如果您只想尝试直接转换为Integer
并捕获异常,则应使用Integer.parseInt()
(如果输入无法解析为,则会抛出NumberFormatException
Integer
):
String j = txtAge.getText();
try {
Integer i = Integer.parseInt(txtAge);
}
catch (NumberFormatException e) {
// j isn't a number...
}
编辑:您提供的答案似乎有些混乱。在您的问题中,错误消息是请输入整数值,就像有效输入只是数字一样。在答案中,您发布的消息是请输入字符串值。
如果要验证输入不有任何数字,则必须使用其他正则表达式,例如.*\\d.*"
。如果匹配,则表示具有数字。或者您也可以使用\\D+
来确保它有一个或多个非数字。
答案 1 :(得分:0)
我已经解决了这个问题:
private void txtNameKeyReleased(java.awt.event.KeyEvent evt) {
String j = (String)txtName.getText();
if ( j.matches("\\d+") && !txtName.getText().isEmpty()) {
jOptionPane1.showMessageDialog(null, "Please enter String values");
txtName.setText("");
} }
感谢那些试图帮助我的人:)