为什么indexOf不能用2种方法工作

时间:2017-08-23 19:06:40

标签: java string for-loop if-statement int

我有两种方法可以从jTextField18.gettext字符串获得保护 第一种方法:

public boolean isEditValid(String number) {
 for (int i = 0; i <= number.length(); i++)
  if (number.indexOf(i) <= 'a' && number.indexOf(i) >= 'z')
   return true;
 return false;
}

第二种方法:

private void jButton18ActionPerformed(java.awt.event.ActionEvent evt) {
 if (jTextField18.getText().isEmpty())
  JOptionPane.showMessageDialog(this, "The text field is emty");
 else if (isEditValid(jTextField18.getText()) == true)
  JOptionPane.showMessageDialog(this, "Edit isnt valid ONLY NUMBERS!");
} 

当我在文本字段上写一个数字和一个字符串时,它说我Edit isnt valid ONLY NUMBERS为什么?

2 个答案:

答案 0 :(得分:1)

如果你想验证一个数字,你可以使用更好的方法来做到这一点,例如(使用正则表达式):

public static boolean isEditValid(String number) {
    return number.matches("^[0-9]+$");
}

答案 1 :(得分:0)

如当前所写,如果所有字符都是小写,则isEditValid()返回false,否则返回true。 所以我怀疑它没有做你期望的事情。

我建议您构建mcve并测试isEditValid()

的不同参数

也应该是

for (int i = 0; i < number.length(); i++)

相反? (我有一段时间没有做过任何java ...)

相关问题