gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:25:30 24 4
gpt4 key购买 nike

嘿伙计们!

我有一些街道字段,通常应包含门牌号,因此我想检查该字段是否包含字符和数字(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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com