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

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?