java - 为什么这个简单的代码会抛出 ArrayIndexOutOfBoundsException?

标签 java

这只是一个虚拟代码。 由于我是 JAVA 新手,我不明白出了什么问题。

我已经提到过: What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? 那里的答案仅与使用错误的长度索引有关。

代码:

class abc{
    static int n;
    static int[] arr=new int[n];
    static void print_arr(){
        for(int x: arr) System.out.print(x+" ");
    }
}
class Main {
    public static void main(String[] args) {
        abc.n=5;
        for(int i=0;i<abc.n;i++){
            abc.arr[i]=10;
        }
        abc.print_arr();
    }
}

我希望这段代码打印 10 五次。

最佳答案

一种可能的方法。

class abc{
static int n;
static int[] arr;
static void init(int size) {
    arr=new int[size];
}
static void print_arr(){
    for(int x: arr) System.out.print(x+" ");
} }


class Main {
public static void main(String[] args) {
    abc.n=5;
    init(abc.n);
    for(int i=0;i<abc.n;i++){
        abc.arr[i]=10;
    }
    abc.print_arr();
} }

更好的方法

class ABC{
 private int size;
 private int[] arr;

ABC(int n) {
    size = n;
    arr = new int[n];
}   

public void print_arr(){
    for(int x: arr) 
    System.out.print(x+" ");
}

public int getSize() {
    return size;
}

public int[] getArray() {
    return java.util.Arrays.copyOf(arr,arr.length);
}

public void setArray(int [] array) {
    arr = array.clone();
} }


class Main {
public static void main(String[] args) {

    int size = 5;
    ABC abc = new ABC(size);

    int [] array = new int[size];

    for(int i=0;i<abc.getSize();i++){
        array[i]=10;
    }
    abc.setArray(array);

    abc.print_arr();
} }

关于java - 为什么这个简单的代码会抛出 ArrayIndexOutOfBoundsException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59316838/

相关文章:

java - 为什么这个带有有界通配符的 Java 通用代码无法编译?

java - oracle 11g数据库和java 1.5问题

java - Apache Tomcat 8 仅在浏览器中呈现空白

java - android 中的 SimpleCursorAdapter

java - 将cpp函数指针转换为java接口(interface)方法

java - Spring boot JPA中不相关实体的加入查询

java - 使用 native SQL 创建表适用于 Hibernate/HSQLDB,插入失败。为什么?

java - Java中如果整数为0,则构造一个不包含整数的字符串?

java - Protocol Buffer : reading all serialized messages from file

java - 强制 Jetty 加载父 ClassLoader 中的类