gpt4 book ai didi

Java-ArrayIndexOutOfBoundsException 错误

转载 作者:行者123 更新时间:2023-12-02 02:51:15 25 4
gpt4 key购买 nike

当我运行以下程序时,我在第 20 行收到错误,这是我的代码:

package J1;
import java.util.Scanner;

public class SpeedLimit {

public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int input = keyboard.nextInt();

String[] tab = new String[2];
String output="";
int speed = 0;
while(input!=-1){
int last =0;
for (int i=0; i<input ; i++){

String pair = keyboard.next();

tab = pair.split(" ");
speed = speed + Integer.parseInt(tab[0])*(Integer.parseInt(tab[1])-last);
last = Integer.parseInt(tab[1]);
}
output = output +speed + "miles" + "\n";
speed =0;
input = Integer.parseInt(keyboard.nextLine());
}
System.out.println(output);
}

}

当我运行代码时,我从键盘输入以下输入:

 3
20 2
30 6
10 7
2
60 1
30 5
4
15 1
25 2
30 3
10 5
-1

将此结果作为输出: 170 英里 180 英里 90英里

但是当我运行代码时出现以下错误

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at J1.SpeedLimit.main(SpeedLimit.java:20)

最佳答案

Stringpair = Keyboard.next(); 这只会读取一个由 "" 分隔的标记,因此当您将 pair 拆分为“”。它只有一个元素,即字符串本身。因此,您需要读取整行,然后用分隔的 "" 分隔它。

另一个错误是,当您使用 Stringpair = Keyboard.nextLine(); 更改该行时,您仍然会收到错误,因为系统认为 Enter 键作为输入.nextLine() 方法。因此,您需要丢弃多余的不必要的输入。

while(input!=-1){
int last =0;
for (int i=0; i<input ; i++){

int ip1=keyboard.nextInt();
int ip2=keyboard.nextInt();

speed = speed + ip1*(ip2-last);
last = ip2;
}
output = output +speed + "miles" + "\n";
speed =0;
input = keyboard.nextInt();
}

关于Java-ArrayIndexOutOfBoundsException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43810499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com