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');
Другие вопросы по тегам