3.1编写一个EmptyStackException类,它继承Exception类。 3.2编写一个FullStackException类,它继承Exception类。捕获该异常时,可以通过该类继承来的getMessage方法获取栈的深度。 3.3定义一个IntStack类,它主要实现int基本数据类型的栈功能: (1)无参构造函数,默认栈的深度为16 (2)有参构造函数,栈的深度通过参数指定。当参数为负数或零时,抛出java.lang包中已有的异常IllegalArgumentException异常。 (3)isEmpty方法和isFull方法,返回值都是boolean.这两个方法用于判断栈是否为空和判断栈是否为满。 (4)pop方法:栈不为空时,实现弹栈功能;栈空时,抛出EmptyStackException异常 (5)push方法:当栈不满时,实现压栈功能;栈满时,抛出FullStackException异常 (6) peek函数:栈不为空时,返回栈顶元素值;栈为空时,抛出EmptyStackException异常。并写出主函数
时间: 2024-03-25 22:39:11 浏览: 55
好的,我会回答你的问题和编写代码。以下是代码实现:
EmptyStackException类:
```java
public class EmptyStackException extends Exception {
public EmptyStackException(String message) {
super(message);
}
}
```
FullStackException类:
```java
public class FullStackException extends Exception {
public FullStackException(String message) {
super(message);
}
}
```
IntStack类:
```java
public class IntStack {
private int[] stackArray;
private int stackSize;
private int top;
public IntStack() {
this(16);
}
public IntStack(int size) {
if (size <= 0) {
throw new IllegalArgumentException("Stack size must be a positive integer.");
}
stackSize = size;
stackArray = new int[stackSize];
top = -1;
}
public boolean isEmpty() {
return (top == -1);
}
public boolean isFull() {
return (top == stackSize - 1);
}
public int pop() throws EmptyStackException {
if (isEmpty()) {
throw new EmptyStackException("Stack is empty.");
}
int value = stackArray[top];
top--;
return value;
}
public void push(int value) throws FullStackException {
if (isFull()) {
throw new FullStackException("Stack is full.");
}
top++;
stackArray[top] = value;
}
public int peek() throws EmptyStackException {
if (isEmpty()) {
throw new EmptyStackException("Stack is empty.");
}
return stackArray[top];
}
public static void main(String[] args) {
IntStack stack = new IntStack(5);
try {
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
//stack.push(6);//测试FullStackException
while (!stack.isEmpty()) {
System.out.println(stack.pop());
}
//System.out.println(stack.peek());//测试EmptyStackException
} catch (FullStackException e) {
System.out.println(e.getMessage());
} catch (EmptyStackException e) {
System.out.println(e.getMessage());
}
}
}
```
在主函数中,我们创建了一个大小为5的IntStack对象,并进行了一些push和pop操作,同时也测试了FullStackException和EmptyStackException的处理。
阅读全文