无法弄清楚为什么我得到ArrayIndexOutOfBoundsException:0,运行时错误

时间:2018-12-15 11:46:12

标签: java arrays

我不知道为什么会出现此运行时错误。 Java告诉我第17行是问题。

import java.util.Scanner;

public class whatIsWrong {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        int size = 0;
        String[] names;
        names = new String[size];
        System.out.printf("%nEnter number of names desired names:  ");
        size = input.nextInt();

        for(int i = 0; i < size; i++) {
           System.out.printf("%nName #%d:  ", i +1);
           names[i] = input.nextLine();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

当前的问题很容易,就是初始化大小为average的数组。在for循环中,您将获得新的大小,因此数组长度不等于该大小。

您需要在0行之后初始化数组。

所以它应该像这样:

size = input.nextInt()

答案 1 :(得分:0)

简而言之:

更改 <SOAP-ENV:Envelopexmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><v23:ProcessShipmentReplyxmlns:v23="http://fedex.com/ws/ship/v23"><v23:HighestSeverityxmlns:v23="http://fedex.com/ws/ship/v23">ERROR</v23:HighestSeverity><v23:Notificationsxmlns:v23="http://fedex.com/ws/ship/v23"><v23:Severityxmlns:v23="http://fedex.com/ws/ship/v23">ERROR</v23:Severity><v23:Sourcexmlns:v23="http://fedex.com/ws/ship/v23">prof</v23:Source><v23:Codexmlns:v23="http://fedex.com/ws/ship/v23">1000</v23:Code><v23:Messagexmlns:v23="http://fedex.com/ws/ship/v23">AuthenticationFailed</v23:Message></v23:Notifications><v23:Versionxmlns:v23="http://fedex.com/ws/ship/v23"><v23:ServiceIdxmlns:v23="http://fedex.com/ws/ship/v23">ship</v23:ServiceId><v23:Majorxmlns:v23="http://fedex.com/ws/ship/v23">23</v23:Major><v23:Intermediatexmlns:v23="http://fedex.com/ws/ship/v23">0</v23:Intermediate><v23:Minorxmlns:v23="http://fedex.com/ws/ship/v23">0</v23:Minor></v23:Version></v23:ProcessShipmentReply></SOAP-ENV:Body></SOAP-ENV:Envelope> 的值不会影响数组size的大小,即names

详细说明:

执行0时,size的值为names = new String[size];,因此即使0被更改,字符串数组names的大小仍为0。之后,将不会更改size的大小。因此它是一个数组。通过在names循环的第一轮访问names[0],您假设它至少有一个元素。