Я получаю эту ошибку в CMD, но она корректно работает в intellij.Это происходит, когда я ввожу данные 3 раза

#java #arrays

#java #массивы

Вопрос:

Создание списка массивов и методы (это происходит, когда я запускаю метод DisplayPremierLeagueTable (). это выполняется в Intelij, и когда я компилирую и запускаю его в CMD, это происходит.

 private ArrayList<FootBallClub> sportsClubsList= new ArrayList<>();
 

Метод AddingMember введите здесь описание изображения

     @Override
     public void AddNewFootBallClub (FootBallClub Cmember) {
        if(Cmember instanceof FootBallClub ){
            sportsClubsList.add(Cmember);
            System.out.println();
            System.out.println(Cmember.getName()  " successfully added!");

        }else if (Cmember instanceof SclFootBallClub){
            sportsClubsList.add(Cmember);
            System.out.println();
            System.out.println(Cmember.getName()  " successfully added!");
        }
        else if(Cmember instanceof UniversityClub){
            sportsClubsList.add(Cmember);
            System.out.println();
            System.out.println(Cmember.getName()   " successfully added!");
        }
        else{
            System.out.println("Full");
        }
    }
 

Отображение таблицы

 @Override
        public void DisplayPremierLeagueTable () {

            int x = sportsClubsList.size();
            FootBallClub footBallClub= null;
            for (int i = 0; i<x;i  ){
                for(int j = 1; j<(x-i);j  ){
                    if((sportsClubsList.get(j-1)).getPoints()<((sportsClubsList.get(j)).getPoints())){
                        footBallClub = sportsClubsList.get(1-j);
                        sportsClubsList.set(1-j, sportsClubsList.get(j));
                        sportsClubsList.set(j, footBallClub);
                    }
                }
            }



                String Name = "Name of the Club";
                String Reg_id = "Registration Id";
                String Location = "Location";
                String Cap_Name = "Name of Captain";
                String Member_Count = "Member Count";
                String Num_of_Wins = "Wins";
                String Num_of_Defeats = "Defeats";
                String Num_of_Draws = "Draws";
                String Num_of_Matches = "Matches";
                String Goal_Soc = "Scored Goals";
                String Goal_received = "Received Goals";
                String Points = "Points";
                System.out.println("                                         ******************************Premier League Table******************************             ");
                System.out.println(" __________________________________________________________________________________________________________________________________________________________");
                System.out.printf(" |%-15s|%-15s|%-15s|%-15s|%-10s|%-10s|%-10s|%-10s|%-15s|%-15s|%-10s|n", Name, Reg_id, Cap_Name, Member_Count, Num_of_Wins, Num_of_Defeats, Num_of_Draws, Num_of_Matches, Goal_Soc, Goal_received, Points);
                System.out.println(" __________________________________________________________________________________________________________________________________________________________");
            for (FootBallClub CMember : sportsClubsList) {
                System.out.printf(" |%-16s| %-14s| %-14s| %-14s| %-9s| %-10s| %-9s| %-9s| %-12s| %-13s |  %-10s|n", CMember.getName(), CMember.getRegistration_Number(), CMember.getCaptain_Name(), CMember.getMember_Count(), CMember.getNum_of_Wins(), CMember.getNum_of_defeats(), CMember.getNum_of_draws(), CMember.getNum_of_Matches(), CMember.getNum_of_Goals_Scored(), CMember.getNum_of_Goals_Received(), CMember.getPoints());
                System.out.println(" __________________________________________________________________________________________________________________________________________________________");
            }

            }
 

Ошибка, которую я получаю в CMD

     Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
            at java.util.ArrayList.elementData(ArrayList.java:424)
            at java.util.ArrayList.get(ArrayList.java:437)
            at PremierLeagueManager.DisplayPremierLeagueTable(PremierLeagueManager.java:62)
            at MainCli.userInput(MainCli.java:41)
            at MainCli.displayMenu(MainCli.java:18)
            at MainCli.AddNewFootballClub(MainCli.java:253)
            at MainCli.userInput(MainCli.java:35)
            at MainCli.displayMenu(MainCli.java:18)
            at MainCli.userInput(MainCli.java:51)
            at MainCli.displayMenu(MainCli.java:18)
            at MainCli.AddNewFootballClub(MainCli.java:253)
            at MainCli.userInput(MainCli.java:35)
            at MainCli.displayMenu(MainCli.java:18)
            at MainCli.AddNewFootballClub(MainCli.java:253)
            at MainCli.userInput(MainCli.java:35)
            at MainCli.displayMenu(MainCli.java:18)
            at Tester.main(Tester.java:4)*
 

Я не указал количество элементов в списке массивов.

Комментарии:

1. Поскольку вы на самом деле не указываете строку, в которой на самом деле происходит исключение, я могу только догадываться, но ваши вызовы sportsClubList.get(1-j) , очевидно, могут быть неверными. Большую часть времени вы определенно получите отрицательные индексы, поэтому вам следует изучить это еще раз.

2. С этим разобрались спасибо за вашу помощь

Ответ №1:

Кажется , что вы сортируете sportsClubsList , меняя местами трефы по индексам j и 1-j . Мне кажется, что ты хочешь поменяться j местами и j-1 вместо этого.

PS В java соглашение об именовании заключается в том, что методы начинаются со строчной буквы