我想 运行 我的代码,但终端告诉索引超出范围。可能是因为 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();
}
}
我正在尝试 运行 我的代码。 但是终端告诉:
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();
}
}