Java 捕获字符串异常
我正在netbeans中生成一个jTextField restrict整数输入,我不知道该怎么做。 我是这样做的:Java 捕获字符串异常,java,netbeans,Java,Netbeans,我正在netbeans中生成一个jTextField restrict整数输入,我不知道该怎么做。 我是这样做的: private void txtNameKeyReleased(java.awt.event.KeyEvent evt) { try { String j = (String) txtName.getText(); } catch ("Which Exception to Catch?") { if (!txtAge.getText(
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]", ""));
}
}
}
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("");
} }
我应该在catch上加什么?您可以根据using测试输入,以确保它只是数字(无需捕获异常,例如a-引发异常以验证条件可能被视为不好的做法) 如果您只是想尝试直接转换为
整数
,并捕获异常,则应使用(如果无法将输入解析为整数
,则会引发NumberFormatException
):
编辑:您提供的答案似乎有点混乱。在您的问题中,错误消息是“请输入整数值”,好像有效输入仅为数字。在您发布的回复中,消息是“请输入字符串值”
如果要验证输入没有任何数字,则必须使用另一个正则表达式,如
*\\d.*
。如果匹配,则表示它有一个数字。或者您也可以使用\\d+
确保它有一个或多个非数字。我已解决了我的问题,如下所示:
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]", ""));
}
}
}
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("");
} }
感谢那些试图帮助我的人:)你的问题到底是什么?不。我不想使用文档筛选器。String j=(String)txtName.getText();这不会引发异常,因为getText()始终返回字符串。不需要强制转换为字符串。我认为您希望将输入字符串转换为整数,然后在用户输入不是有效整数时引发NuberFormatException。不,如果输入是整数或任何非字符串输入,我希望textfield拒绝输入。这就是我寻求帮助的原因。好的,我想了解更多。
\d
是只匹配数字的特殊标志。+
表示一次或多次出现。如果要匹配零次或多次出现(即接受空字符串),可以使用*
。我建议您查看一下。等等。我认为您提供的帮助有错误:-)您也可以使用\\d+
仅匹配一个或多个非数字。无需检查isEmpty()正则表达式已经检查了至少一个数字。此外,你可以考虑一些有帮助的答案和解决问题的答案。这将有助于未来的访问者有一个明确的答案,也会让其他用户看到这个问题已经被赋予了VALI。d回答。所以不带isEmpty()按backspace键就可以了
?这里似乎有点混乱。在您的问题中,错误消息是请输入整数值,就好像有效输入只有数字一样。在这个回答中,消息是请输入字符串值。如果您想验证输入没有任何数字,您必须使用另一个正则表达式,如*\\d.*”
。如果它匹配,就意味着它有一个数字。嗯,我在编辑时遇到了麻烦。对不起。但是我想要的是禁用整数项。然后看看我在答案中的编辑<代码>\\d+
将检测输入为1234
,但不是name1
。您应该使用\\D+
仅匹配非数字。