我想 运行 我的代码,但终端告诉索引超出范围。可能是因为 ArrayList methode get ot smth like this

I want to run my code, but terminal tells index out of bounds. Probably, because of ArrayList methode get ot smth like this

我正在尝试 运行 我的代码。 但是终端告诉:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
    at java.util.ArrayList.rangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at CF455A.main(CF455A.java:25)

第 25 个字符串是:game.remove(game.get(max+1)); 我的代码:

import java.util.*;
import java.lang.*;
import java.io.*;

public class CF455A {
 public static void main(String args[]) throws java.lang.Exception {
     Scanner in = new Scanner (System.in);
     int n = in.nextInt();
     int max = 0;
     ArrayList<Integer> game = new ArrayList<Integer>();

    for(int i = 0; i < n; i++){
        int t = in.nextInt();
        game.add(i, t);
    }

    int counter = 0;

    while(game.size()>0){
        for(int j = 0; j < game.size(); j++){
            if(max <= (int)game.get(j)){max=j;}
            for(int i = 0; i < game.size(); i++){
                counter = counter + (int)game.get(max);
                game.remove(game.get(max));
                game.remove(game.get(max+1));
                game.remove(game.get(max-1));
            }
        }

    }
    System.out.print(counter);
    in.close();
}

} 我认为这是因为 ArrayList 或像 game.get();game.remove(); 这样的方法。 我只是想更改 ArrayList

的元素之一的值

列表项

根据逻辑:- 如果我给出输入:- 5 1 2 3 4 5 然后先通过:- game.size() = 5; while condition true -> 并尝试删除索引 (1,0,-1) 处的项目。因此 (-1) IndexOutOfBounds 失败。 请按如下方式进行空检查:-

import java.util.*;
import java.lang.*;
import java.io.*;

public class TestMemberOuter1 {
    public static void main(String args[]) throws java.lang.Exception {
        Scanner in = new Scanner (System.in);
        int n = in.nextInt();
        int max = 0;
        ArrayList<Integer> game = new ArrayList<Integer>();

        for(int i = 0; i < n; i++){
            int t = in.nextInt();
            game.add(i, t);
        }

        int counter = 0;

        while(game.size()>0){
            for(int j = 0; j < game.size(); j++){

                if(max <= (int)game.get(j))
                {
                    max=j;
                }
                for(int i = 0; i < game.size(); i++){
                    counter = counter + (int)game.get(max);
                    if(max < game.size() )
                    {
                        game.remove(game.get(max));
                    }
                    if(max+1 <  game.size() )
                    {
                        game.remove(game.get(max+1));
                    }

                    if(max-1 > 0 )
                    {
                        game.remove(game.get(max-1));
                    }

                }
            }

        }
        System.out.print(counter);
        in.close();
    }
}