Метод indexOf()

233
06 марта 2017, 10:15

После преобразования массива чисел типа 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]));
Answer 1

Приведите аргумент поиска к строке:

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"
Answer 2

Читаем документацию.

Если вы в 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] + ""));
READ ALSO
Формат видео для фона сайта

Формат видео для фона сайта

Какой формат видео лучше всего выбирать для фона на сайт, чтобы соотношение вес/качество был самым оптимальным? Сейчас стоит mp4, 720p качество37...

296
Как с сайта скачать все картинки? [требует правки]

Как с сайта скачать все картинки? [требует правки]

Вопрос следующий как скачать картинки с сайта, но не маленькие, а большие, которые открываются при нажатии на картинку?

280
Фигуры в css на различных экранах

Фигуры в css на различных экранах

Добрый день всемВопрос: как при помощи css круг сделать под любой экран? width, height и border-radius в процентах дают круг на одних экранах и эллипс на других

269
Как синхрониировать 3 потока C#

Как синхрониировать 3 потока C#

Есть задачаУчебная, так что вопросы оптимальности решения отходят на второй план

312