Я хочу знать положение введенных чисел, поэтому решил преобразовать тип 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.charAt (4), в то время как размер x всего один ???




Метод 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");
}
}
Я обновил свой ответ. Теперь вы вводите все цифры в одной строке.
о, я забыл, эта программа хочет знать, являются ли введенные числа палиндромом или нет, так что мне делать (извините за код, это немного беспорядочно)
Пожалуйста, подумайте, что вы хотите, чтобы программа делала. Затем обновите свой вопрос и запишите, что вы уже пробовали, и какова ваша конкретная проблема на данный момент. Это увеличит ваши шансы получить исчерпывающий ответ.
Вы пытаетесь получить входной номер, используя Вход сканера
Вам не понадобятся эти строки
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, а затем начать кодирование, так как это поможет вам понять основы программирования.
Ваша строка x равна '0', но вы пытаетесь получить значение из индекса 4. Вы можете использовать любую опцию отладки редактора.