当前位置: 首页 > 知识库问答 >
问题:

Java ArrayIndexOutOfBoundsException错误

孟光耀
2023-03-14

当我运行以下程序时,第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)

共有3个答案

夹谷野
2023-03-14

Keyboard.next()将只读取输入直到空格,所以对和数组将只有一个数字,所以选项卡[1]导致arrayOutOfBound异常。使用nextLine()方法读取带空格的输入。

终洛华
2023-03-14

您读取变量对的方式是错误的,然后将其拆分并分配给选项卡,选项卡无法自动获取索引,导致变量对出现问题。

*nextLine():读取当前行的剩余部分,即使它是空的。

        keyboard.nextLine(); //To avoid the exception you commented
        String pair = keyboard.nextLine(); //here is solved
        tab = pair.split(" ");
计燕七
2023-03-14

字符串对=keyboard.next();这只读取一个由"分隔的令牌,因此当您将"分隔时。它将只有一个元素,字符串本身。因此,您需要读取整行,然后按分隔符"将其拆分。

另一个错误是,当您更改这一行与字符串对=keyboard.next线();,你仍然会得到错误,因为系统认为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();
}
 类似资料:
  • 我正在尝试搜索亚马逊的产品广告,并使用botlenose来帮助我做到这一点。但是,我刚刚收到HTTP错误400。 其他一些重要信息: 我来自巴西,我的标签也来自亚马逊。这是个问题吗? 我确实检查了我的钥匙、秘密和标签,一切正常。我确实在StackOverflow上查看了其他一些问题,但对我来说没有任何效果。 当然,出于安全原因,我更改了密钥。 Traceback(最近一次调用最后一次):File"

  • 我有一个基于Spring Web model view controller(MVC)框架的项目。Spring Web模型-视图-控制器(MVC)框架的版本是3.2.8 我有这个控制器 这个URL一切正常:

  • 目前从Angular JS controller中,我试图将JSON数据发送到后端服务。但是我有400个错误的请求错误。 在Controller中,我试图通过http服务发送数据,如下所示:

  • 我得到了这个错误,有什么想法会导致它吗?我试图发送一个DTO,它有一个扩展抽象类的对象列表,我想这个问题可能是因为DTO中的列表,还是因为抽象类的子类?

  • 在月食中, ”org.apache.axis2。AxisFault:传输错误: 403错误:禁止”试图从svn检出项目时发生错误。我不能实现这个错误,因此我检查了从终端使用"svn-co"命令的项目。 但是,有趣的是,当我试图在Eclipse中运行应用程序时,在输入凭据(用户名和密码)并按下“登录”按钮之后,我又遇到了相同的错误。响应是JFrame上的无效用户名/密码,但凭据没有错误。这只发生在日

  • Errors 错误 Library routines must often return some sort of error indication to the caller. As mentioned earlier, Go’s multivalue return makes it easy to return a detailed error description alongside th

  • 本章概述了Google API错误模型,以及开发人员如何正确生成和处理错误的一般指南。 Google API使用简单的协议无关错误模型,这使我们能够在不同的API,API协议(如gRPC或HTTP)以及错误上下文(例如,异步,批处理或工作流错误)中获得一致的体验。 错误模型 错误模型在逻辑上由google.rpc.Status定义,当API发生错误时,返回一个Status实例给客户端。 以下代码段

  • 5.4. 错误 在Go中有一部分函数总是能成功的运行。比如strings.Contains和strconv.FormatBool函数,对各种可能的输入都做了良好的处理,使得运行时几乎不会失败,除非遇到灾难性的、不可预料的情况,比如运行时的内存溢出。导致这种错误的原因很复杂,难以处理,从错误中恢复的可能性也很低。 还有一部分函数只要输入的参数满足一定条件,也能保证运行成功。比如time.Date函数