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

用构造方法为动态数组赋长度,为什么编译器会报错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条回答 默认 最新

  • 五月天的尾巴 2021-11-30 21:35
    最佳回答

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

    
     
    //栈长度的构造方法
    public Stack(int number) {
        this.number = number;
        this.stack = new String[number];
    }
    
    
    
    评论
    解决 1 无用
    打赏 举报 编辑记录
查看更多回答(1条)

相关推荐 更多相似问题