Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法理解获取ArrayIndexOutofBounds的原因异常:0,运行时错误_Java_Arrays - Fatal编程技术网

Java 无法理解获取ArrayIndexOutofBounds的原因异常:0,运行时错误

Java 无法理解获取ArrayIndexOutofBounds的原因异常:0,运行时错误,java,arrays,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

我不明白为什么会出现这个运行时错误。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();
        }
    }
}
import java.util.Scanner;
公共课出了什么问题{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
int size=0;
字符串[]名称;
名称=新字符串[大小];
System.out.printf(“%输入所需名称的名称数:”);
size=input.nextInt();
对于(int i=0;i
目前的问题很简单,就是初始化一个大小为
0
的数组。在for循环中,您将获得新的大小,因此数组长度不等于该大小

需要在
size=input.nextInt()行之后初始化数组

所以它应该是这样的:

import java.util.Scanner;

public class whatIsWrong {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int size = 0;

        System.out.printf("%nEnter number of names desired names:  ");
        size = input.nextInt();

        String[] names = new String[size];

        for(int i = 0; i < size; i++) {
            System.out.printf("%nName #%d:  ", i +1);
            names[i] = input.nextLine();
        }
    }
}
import java.util.Scanner;
公共课出了什么问题{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
int size=0;
System.out.printf(“%输入所需名称的名称数:”);
size=input.nextInt();
字符串[]名称=新字符串[大小];
对于(int i=0;i
简称:

更改
size
的值不会影响数组
names
的大小,即
0

详细说明:


name=新字符串[大小]时时,size的值为
0
,因此字符串数组
names
的大小为
0
,即使
size
之后更改,也不会更改
names
的大小。因此它是一个空的数组。通过在
for
循环的第一轮中访问
名称[0]
,您假定它至少有一个元素。

Move
名称=新字符串[size]行后
size=input.nextInt()投票结束,因为“这个问题是由一个无法再复制的问题或一个简单的印刷错误引起的。虽然这里可能有类似的问题,但这个问题的解决方式不太可能帮助未来的读者。”
names=new String[size]您声明的
size=0可能的副本谢谢您的帮助!不客气:)