zx2415286134 2021-11-30 20:13 采纳率: 66.7%
浏览 111
已结题

用构造方法为动态数组赋长度,为什么编译器会报错ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0

/**

  • 使用一维数组模拟栈数据结构
  •  1、这个栈中可以存储java中的String引用类型数据
    
  •  2、栈中提供push方法模拟压栈,pop方法模拟弹栈(满了,空了提供信息)
    
  •  3、编写程序,new栈对象,调用poppush方法模拟压栈弹栈
    
  • /

//测试类
public class HomeWork1 {

//主方法
public static void main(String[] args) {

    //新建一个静态数组以方便测试
    String[] arrayIn = {"123","133","233"};

    //创建Stack引用数据类型的引用
    Stack stack1 = new Stack(3);
    stack1.push(arrayIn);

    //调用下面工具类中的方法遍历数组
    arrayPrint.Print(stack1.stack);

/*
报错:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at Array.Stack.push
at Array.HomeWork1.main
*/
}

}

//Stack类
/* ... class Stack {

//规定Stack长度为number
private int number ;
String[] stack = new String[number];

//栈长度的构造方法
public Stack(int number) {
    this.number = number;
}


public void push(String[] arrayIn) {
    for (int i = 0 ; i < arrayIn.length ; i++) {
        this.stack[i] = arrayIn[i];
    }
}

// public void pop(String[] array) {}

}

//工具类
class arrayPrint{
public static void Print(String[] arrayIn) {

    for (int i = 0 ; i < arrayIn.length ; i++) {
        System.out.println(arrayIn[i]);

    }
}

}

  • 写回答

2条回答 默认 最新

  • 五月天的尾巴 新星创作者: Java技术领域 2021-11-30 21:35
    关注

    statck类有问题,构造方法中应该如下写

    
     
    //栈长度的构造方法
    public Stack(int number) {
        this.number = number;
        this.stack = new String[number];
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月8日
  • 已采纳回答 11月30日
  • 创建了问题 11月30日