Ошибка class java.lang.Integer cannot be cast to class java.lang.String
Нужно, чтобы при вводе в консоль номера ячейки массива выходило соответствующее значение на экран, но появляется ошибка:
class java.lang.Integer cannot be cast to class java.lang.String (java.lang.Integer and java.lang.String are in module java.base of loader 'bootstrap')
Код:
public class Raduga {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] colors = {"Red", "Orange", "Yellow", "Green", "Blu", "Dark blu", "Purple"};
System.out.println("add number [0:6]");
int num = in.nextInt();
int key = Arrays.binarySearch(colors, num);
String keyS = Integer.toString(key);
System.out.println(keyS);
}
}
Подскажите, пожалуйста, что я делаю неправильно.
Ответы (2 шт):
В доках нет метода с сигнатурой String[], int и даже Object[], int, есть как минимум
binarySearch(Object[] a, Object key)
Это значит, что правильно в массиве из строк искать строку, а вы зачем-то пытаетесь искать число в строке, что вообще странно и не ясно чего вы хотели этим добиться.
Также перед подобного рода поиском надо отсортировать массив, иначе результат вызова метода будет не определен
Пример код
String[] colors = {"A", "B", "C", "D", "E", "F", "G"};
System.out.println(Arrays.binarySearch(colors, "D"));
Закономерно выведет: 3
Как я понял, Вам надо по введенному номеру элемента получить соответствующее ему значение из массива:
Scanner in = new Scanner(System.in);
String[] colors = {"Red", "Orange", "Yellow", "Green", "Blu", "Dark blu", "Purple"};
System.out.println("add number [0:6]");
int num = in.nextInt();
System.out.println(colors[num]);