Im пытается написать метод, который принимает идентификатор формы «xxxx-xxxx» (x - любое число 1-9) и проверяет, действительно ли введенный идентификатор. Например, 1111-1111 будет действительным, но 111p-1111 или 11111-1111 не будет. Однако после того, как я написал этот метод, он выглядит как истинный, даже если ID имеет форму 111p-1111.java ID check method
public static boolean idCheck(String ID){
char[] idChar = ID.toCharArray();
boolean firstHalf = false;
boolean secHalf = false;
for (int i = 0; i < 5; ++i){//Check first half
if ((idChar[i] > 47 && idChar[i] < 58)){//Checks ascii vals to see if valid ID
firstHalf = true;
}
}
for (int i = 5; i < idChar.length; ++i){//Check second half
if ((idChar[i] > 47 && idChar[i] < 58)){//Checks ascii vals to see if valid ID
secHalf = true;
}
}
//If all values are valid, returns true.
if (firstHalf == true && secHalf == true && idChar[4] == '-' && ID.length() == 9){
return true;
}
return false;
}
Да потому, что если один из части содержит ряд, вы установили логическую переменную в действительности. Ваша лучшая ставка, вероятно, заключается в том, чтобы установить firstHalf и secondHalf как true, а затем в вашем цикле for, если это не число, установите для переменной boolean значение false и разбейте цикл. Если вы знакомы с регулярными выражениями, вы можете использовать совпадения с регулярным выражением, говорящим «соответствовать 4 цифрам - 4 цифры», –