Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 1 at Main.main(Main.java:15) Why?

132
22 сентября 2019, 14:00

Если я в 15 строке заменяю на простое, обыкновенное число (не digit.nextInt()), то все работает по плану!

/*Ex:
5
Tanos 99
Spiderman 65
Venom 95
Average 100
Hulk 85
↓↓↓Answer should be:
Average 100
Tanos 99
Venom 95
Hulk 85
Spiderman 65*/
import java.util.Scanner;    
public class Main {
    public static void main(String[] args){
    Scanner digit = new Scanner(System.in);
    int n = digit.nextInt();
    String[][] U = new String[n][2];
    String[] attar = new String[n];
    int[] sandar = new int[n];
    String at_san;
    for (int i =0;i<n;i++){
        at_san = digit.nextLine();
        sandar[i] = Integer.parseInt(at_san.split(" ")[1]); //here is 15row
                        attar[i] =at_san.split(" ")[0];
    }
    int temp_san_max = sandar[0];String temp_at_max =attar[0];int temp = 0;
    for (int k = 0;k<n;k++){
         for (int i = 0;i<n;i++){
             if (temp_san_max < sandar[i]){
                 temp_san_max = sandar[i];
                 temp_at_max = attar[i];
                 temp = i;                 
              }
         }
         U[k][0] = temp_at_max;   //here is 28 row
         U[k][1] = String.valueOf(temp_san_max);
         temp_san_max = 0;
         sandar[temp] = 0;
         attar[temp] = "used";
    }
    for (int i = 0;i<n;i++){
         System.out.println(U[i][0] + " "+U[i][1]);
    }
  }
}
Answer 1

Вы делите строку at_san по пробелу. Если ваша строка не содержит пробелов, то у вас в массиве будет только нулевой элемент равный вашей строке. При попытке обратиться к первому элементу массива вам сообщают, что такого элемента нет. Добавьте проверку наличия пробела в строке, перед выполнением split.

READ ALSO
Версионирование API Spring

Версионирование API Spring

У меня есть старый контроллер, который обслуживает все запросы по адресу /get, то есть на уровне класса стоит аннотация @RequestMapping(value = "get")

182
Передача атрибутов из цикла Thymeleaf

Передача атрибутов из цикла Thymeleaf

Имеется контроллер, который выводит все департаментыВ html с помощью th:each Я вывожу их все

132
Равенство простых типов и объектов

Равенство простых типов и объектов

Можно ли сравнивать значение разных типов, таких как byte, short, char, int, long, float, double? Иначе говоря, будет ли иметь смысл логическая операция:

106