Java: не удается найти символ при попытке использовать.isDigit()
Попробовал как в моей IDE, так и в онлайн IDE, мой учебник на Zybooks.com дает мне возможность работать. Моя цель - проверить, есть ли переменная passCode
содержит цифру. Вот код:
public class CheckingPasscodes{
public static void main (String [] args) {
boolean hasDigit = false;
String passCode = "";
int valid = 0;
passCode = "abc";
if (passCode.isDigit(passCode.charAt(0)) || passCode.isDigit(passCode.charAt(1)) || passCode.isDigit(passCode.charAt(2))) {
hasDigit = true;
}
if (hasDigit) {
System.out.println("Has a digit.");
}
else {
System.out.println("Has no digit.");
}
}
}
Я получаю ошибку в строке 9 (где первый if
начинается):
java: cannot find symbol
symbol: method isDigit(char)
location: variable passCode of type java.lang.String
Пробовал менять passCode.charAt(0)
(или 1 и 2) просто 'a'
(или 'b' и 'c'), чтобы проверить, было ли это потому, что я помещал метод в другой метод, но, похоже, я получаю ту же ошибку.
В конце концов я решил проблему, спросив друга, который предоставил мне это:
char s = passCode.charAt(0);
char s1 = passCode.charAt(1);
char s2 = passCode.charAt(2);
if ((s>'0' && s<'9') || (s1>'0' && s1<'9') || (s2>'0' && s2<'9')) {
hasDigit=true;
}
Это имеет смысл, и я подумал о том, чтобы сделать нечто подобное, но глава, в которой это упражнение не .charAt()
- мы говорили об этом раньше, а скорее о .isDigit()
и другие операции с персонажами, поэтому делать то, что я делал, - это почти нечестно.
Это сводит меня с ума.
PS: Я довольно новичок в Java, поэтому, если ответ на этот вопрос действительно очевиден, мне очень жаль. И спасибо, что нашли время, чтобы прочитать все это!
2 ответа
Ты звонишь .isDigit()
на String
объект, у которого нет такого метода. Это статический метод Character
класс
Character.isDigit(passCode.charAt(0));
Большой намек на то, что в вашем сообщении об ошибке указано следующее:
location: переменная passCode типа java.lang.String
который должен автоматически побудить вас взглянуть на String
класс для документации по любому методу, который вы ищете - и, следовательно, чтобы обнаружить, что у него нет такого метода.
У java.lang.String нет метода isDigit, то есть только для класса Char...
использовать его как
boolean hasDigit = Character.isDigit('1');