java - 检查输入字段是否包含数字和字符

标签 java input-field checkvalidity

嘿伙计们!

我有一些街道字段,通常应包含门牌号,因此我想检查该字段是否包含字符和数字(0-9)。如果两者都正确,则输入正确。顺便说一句,我不想​​使用正则表达式。当有人可以帮助我时,那就太棒了。我不知道如何检查它。

谢谢。

我用用户输入尝试了这个,我测试了 Railway 10

System.out.println("Street:");
strasse = input.readLine();

while(true) {
while (strasse.length() > 35) {
      System.out.println("Input has a limit of 35 signs. Enter again:");
   }

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

      if (Character.isDigit(strasse.charAt(i))) {
         checkDigit = true;
      }
      else if (Character.isLetter(strasse.charAt(i))) {
         checkLetter = true;
      }

      if (checkDigit && checkLetter == true) {
         break;
      }
      else { // <= PROBLEM. You should give a chance to test all chars from address     
        System.out.println("Must contain at least 1 number or character. Enter again:");
        strasse = input.readLine();
      } 
   }
}

它没有给出 checkDigit 的真实返回值。

最佳答案

如果您对街道地址格式没有任何限制,只想检查是否至少有一个字符数字和一个字母字符,则可以使用

boolean checkAddress(String address) {
   boolean hasDigit = false;
   boolean hasLetter = false;
   for (int i = 0; i < address.length(); i++) {
      if (Character.isDigit(address.charAt(i))) {
         hasDigit = true;
      }
      else if (Character.isLetter(address.charAt(i))) {
         hasLetter = true;
      }
   }
   return hasDigit && hasLetter;
}

编辑 缺少结尾的“)”。 我测试过:

System.out.println(checkAddress("aksjdbakjs, 90."));  // => true  
System.out.println(checkAddress("aksjdbakjs asd asd")); // => false
System.out.println(checkAddress("...90.;;;")); // => false

编辑2 针对所提供代码的建议解决方案

System.out.println("Street:");
strasse = input.readLine();
boolean strasseIstRecht = false;    

while(!strasseIstRecht) {
   if (strasse.length() > 35) {
      System.out.println("Input has a limit of 35 signs. Enter again:");
   }
   else {
      // re-initialise for each new input
      boolean checkDigit = false;
      boolean checkLetter = false;

      for (int i = 0; i < strasse.length(); i++) {
         if (Character.isDigit(strasse.charAt(i))) {
            checkDigit = true;
         }
         else if (Character.isLetter(strasse.charAt(i))) {
            checkLetter = true;
         }

         if (checkDigit && checkLetter) {
            strasseIstRecht = true;
            break; // ok address has both no need to continue the for
         } 
      }
      // Now check if we need to ask a new strasse
      if (!strasseIstRecht) { 
        System.out.println("Must contain at least 1 number or character. Enter again:");
        strasse = input.readLine();
      }
   }
}

您可以通过将 strasse = input.readLine(); 放在 while(...) 之后并删除完成的两行来简化一点在上面的代码中。

关于java - 检查输入字段是否包含数字和字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28856842/

相关文章:

javascript - 匹配脚本开头的输入模式

javascript - HTML5 checkValidity 表示空输入有效

java - 欧拉项目#10,java

java - 导入项目到eclipse

javascript - 优化从输入字段复制数据的 javascript onclick 函数

javascript - 检查输入字段动态增量的正则表达式(AngularJs)?

javascript - 如何在输入字段 "password"中显示文本并在输入后再次切换到密码 View

java - sql - 当我得到 2 个或更多具有相同值的值时,仅更新 1 个(查询找到的第一个)值的方法?

java - 在 doPost/doGet 期间处理 session 时 session 是否会过期,如果是,可以采取什么操作