Как мне отладить эту ошибку, касающуюся строки и int

Я хочу знать положение введенных чисел, поэтому решил преобразовать тип String в тип данных int с помощью синтаксического анализа, исходный код приведен ниже:

public static void main (String [] Args) {
    Scanner input = new Scanner (System.in);
    String x = "0" ;
    int number = Integer.parseInt(x);

    System.out.print("\nEnter 5 numbers: ");
    number = input.nextInt();

    if ((x.charAt(0) == x.charAt (4)) && (x.charAt(1) == x.charAt(3))) {
        System.out.print("The set of numbers is equal to its original value");
    } else {
        System.out.print("The set of numbers is not equal to its original value");
    }   
}   

После компиляции файла он не запускается и появляется эта ошибка.

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4 at java.base/java.lang.StringLatin1.charAt(Unknown Source) at java.base/java.lang.String.charAt(Unknown Source) at activity10.main(activity10.java:12)

Ваша строка x равна '0', но вы пытаетесь получить значение из индекса 4. Вы можете использовать любую опцию отладки редактора.

Amit 21.10.2018 10:48

Пожалуйста, переформатируйте код в своем сообщении.

Andrzej Ziółek 21.10.2018 10:53

Я не понимаю, что пытается сделать ваша программа (ее логика не соответствует результату). Возможно, сделайте шаг назад и переосмыслите свой алгоритм.

Henry 21.10.2018 10:55

как получить x.charAt (4), в то время как размер x всего один ???

TaQuangTu 21.10.2018 10:59
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
99
2

Ответы 2

Метод charAt(i) возвращает символ i-йString (начиная с индекса 0). Это означает, что если вы хотите вызвать yourString.charAt(k), необходимо, чтобы yourString имел как минимум символы к + 1.

Согласно вашему коду

String x = "0";

x будет всегда быть"0". Таким образом, любой вызов x.charAt(i) для я> 0 приведет к StringIndexOutOfBoundsException.

Обновлять

Следующий код делает то, что вам нужно?

public static void main(String[] args) {
    Scanner input = new Scanner (System.in);

    System.out.print("\nEnter 5 numbers: ");
    String x = input.next();

    if ((x.charAt(0) == x.charAt (4)) && (x.charAt(1) == x.charAt(3))) {
        System.out.print("The set of numbers is equal to its original value");
    } else {
        System.out.print("The set of numbers is not equal to its original value");
    }
}

Я обновил свой ответ. Теперь вы вводите все цифры в одной строке.

Antimon 21.10.2018 11:35

о, я забыл, эта программа хочет знать, являются ли введенные числа палиндромом или нет, так что мне делать (извините за код, это немного беспорядочно)

pat 21.10.2018 11:39

Пожалуйста, подумайте, что вы хотите, чтобы программа делала. Затем обновите свой вопрос и запишите, что вы уже пробовали, и какова ваша конкретная проблема на данный момент. Это увеличит ваши шансы получить исчерпывающий ответ.

Antimon 21.10.2018 11:46

Вы пытаетесь получить входной номер, используя Вход сканера

Вам не понадобятся эти строки

String x = "0" ;
int number = Integer.parseInt(x);

Все, что вам нужно сделать, это сначала получить числа

int number1 = input.nextInt();
int number2 = input.nextInt();
int number3 = input.nextInt();
int number4 = input.nextInt();
int number5 = input.nextInt();

а затем начнем со сравнения чисел.

Кроме того, вы можете пройти несколько руководств по Java, а затем начать кодирование, так как это поможет вам понять основы программирования.

Другие вопросы по теме