После преобразования массива чисел типа int в строку методом Arrays.toString(); перестал работать метод indexOf(). То есть при выполнении такого кода на экран всегда выводится -1. Как это исправить?
int n = 10;
int[] mass = new int[n];
int a = 0, b = 10;
//fill in the mass with random numbers
for(int i=0; i < n; i ++){
mass[i] = a + (int)(Math.random()*b);
}
String str = Arrays.toString(mass);
System.out.println(str.indexOf(mass[0]));
Приведите аргумент поиска к строке:
System.out.println(str.indexOf(mass[0] + "")); // 1
Обратите внимание на особенность выбранного метода сериализации массива:
String str = Arrays.toString(mass);
System.out.println(str); // "[3, 5, 8, 3, 0, 5, 3, 4, 0, 3]"
Если это не то, что вам нужно, попробуйте другой метод:
StringBuilder sb = new StringBuilder(mass.length);
for (int i : mass) {
sb.append(i);
}
String s = sb.toString();
System.out.println(s); // "3583053403"
Читаем документацию.
Если вы в indexOf() передаёте int, функция считает его как код символа.
Вам необходимо преобразовать int в строку и передавать в метод её.
Вызывайте так:
System.out.println(str.indexOf(Integer.toString(mass[0])));
Или так:
System.out.println(str.indexOf(String.valueOf(mass[0])));
Или так:
System.out.println(str.indexOf(mass[0] + ""));
Сборка персонального компьютера от Artline: умный выбор для современных пользователей