Java中的堆栈有例外

-1 java stack exception

题 :

b)Stack是后进先出(LIFO)数据结构.编写一个Java类Stacklnt,它使用alray作为私有数据结构来存储整数堆栈.Stacklnt有:

  • 最大大小,在创建Stacklnt对象时设置.如果大小超出10到10的范围,则应抛出异常.1000

  • 方法push,将值添加到堆栈顶部.如果在调用push时堆栈已满,则应抛出异常.

  • 方法pop,用于删除并返回堆栈顶部的值.如果在调用pop时堆栈为空,则应抛出异常.

c)编写一些示例代码,以显示如何使用(b)部分中的类Stacklnt.包括正常使用的示例以及抛出异常的所有情况.

好吧基本上这是一个我试图解决的问题,真的非常感谢一些帮助.

例外情况就是这种形式

// Throw an exception!
public T pop() throws EmptyStackException
{
   if (contents.size() == 0) 
   { throw new EmptyStackException(); } 
   else
   { return contents.remove(0); }
}
Run Code Online (Sandbox Code Playgroud)

我到目前为止:

public class Stack {
  private int top;
  private int[] storage; 

  Stack(int capacity) {
        if (capacity <= 0)
              throw new IllegalArgumentException(
                         "Stack's capacity must be positive");
        storage = new int[capacity];
        top = -1;
  }

  void push(int value) {
        if (top == storage.length)
              throw new StackException("Stack's underlying storage is overflow");
        top++;
        storage[top] = value;
  }

  int peek() {
        if (top == -1)
              throw new StackException("Stack is empty");
        return storage[top];
  }
}
Run Code Online (Sandbox Code Playgroud)

wei*_*iji 5

你试图一次完成整个程序,这有点困难,因为可能会有许多琐碎的语法错误,其中任何一个都会导致它无法编译.

所以,建议采取婴儿步骤 - 你可能会听到很多.它是这样的(假设你还没有编写任何代码):

1)编辑StackInt.java文件,使其仅包含以下内容:

class StackInt {
}
Run Code Online (Sandbox Code Playgroud)

2)编译它.
2a)如果编译不正确,请在添加新代码之前先修复这些错误.
3)添加少量新代码.比方说,一个main()方法.你的班级现在看起来像这样:

class StackInt {
    public static void main(String[] args) {
        System.out.println("hello world!");
    }
}
Run Code Online (Sandbox Code Playgroud)

4)编译它.然后运行它.如果它不编译,请在继续之前修复这些错误.如果它编译,则运行它.你应该看到它打印出"hello world!".这告诉你它已成功运行.如果没有输出,那么你知道某些事情是错误的,你必须在继续之前解决这个问题.

通过这种方式,您可以使用"婴儿步骤" - 每次只添加少量代码,然后编译并运行它以确保它按预期方式工作.

以这种方式做程序对我来说真的很有帮助.您可以一次处理一个方法,而不是键入所有方法并想知道它失败的位置.我推荐它.

编辑:
由于您已经编写了代码,您可以通过注释掉大部分代码来调整这种"婴儿步骤"方法,这样您就不会浪费它.使用/*和*/注释掉整个部分 - 这样编译器会忽略它,你可以一次尝试一件.它看起来像这样:

class StackInt {
    /*
    this is "commented out"
    push(int number) {

    }
    */

    public static void main(String[] args) {
        System.out.println("hello world!");
    }
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.