gpt4 book ai didi

java - java中使用堆栈匹配括号中的异常处理

转载 作者:行者123 更新时间:2023-12-02 05:50:23 25 4
gpt4 key购买 nike

我正在尝试编写一个程序,使用堆栈检查括号匹配。这是我的 ArrayStack 类。

public class ArrayStack{ 
private final int DEFAULT_SIZE=10;
public int tos;
Object[] array;
public ArrayStack(){
array =new Object[DEFAULT_SIZE];
tos=-1;
}
public void push(Object e)throws OverFlowException{
if (isFull()){
throw new OverFlowException("OverFlow");
}
else{
array[tos+1]=e;
tos++;
}
}
public Object topAndpop() throws EmptyStackException{
Object returnPop;
if (isEmpty())
throw new EmptyStackException("Stack empty");
else{
returnPop=top();
pop();
}
return returnPop;
}
public void pop() throws EmptyStackException{
if (isEmpty())
throw new EmptyStackException("Stack empty");
else
tos--;
}
public Object top() throws EmptyStackException{
if (isEmpty())
throw new EmptyStackException("Stack empty");
else
return array[tos];
}

public boolean isEmpty(){
return tos==-1;
}


public boolean isFull(){
if(tos==array.length)
return true;
else
return false;
}
public void makeEmpty() throws EmptyStackException{

while (tos>=0){
if (isEmpty())
throw new EmptyStackException("Stack empty");
else
pop();
}
}
public void print(){
for (int i=0;i<=tos;i++){
System.out.println(array[i]);
}
}

public static void main (String args[]) throws EmptyStackException,OverFlowException {
ArrayStack newStack=new ArrayStack();
newStack.push("S");

newStack.push("apple");
newStack.push("D");
newStack.topAndpop();
newStack.push("P");

newStack.print();

}

}

这是我的匹配类(class)。

public class Matching{
ArrayStack match_Stack=new ArrayStack();
Object popped;
Object[] array_match={"{","}"};
public boolean matching() {
for(int i=0;i< array_match.length;i++){
if (array_match[i]=="{" || array_match[i]=="[" ||array_match[i]=="(" )
match_Stack.push(array_match[i]);
if(array_match[i]=="}" || array_match[i]=="]" || array_match[i]==")"){
if (match_Stack.isEmpty())
return false;
if (match_Stack.topAndpop()==array_match[i]);
return true;
}

}
if (match_Stack.isEmpty())
return true;
else
return false;
}
public static void main (String args[]) throws EmptyStackException,OverFlowException {
}

}

这是 EmptyStackException 类:

public class EmptyStackException extends Exception{
public EmptyStackException(){
super();
}
public EmptyStackException(String s){
super(s);

}
public void print(){
System.out.println("OverFlow");
}
}

但问题是,当我编译匹配时,我收到一个错误,因为 未报告的异常 EmptyStackException.must 被捕获或声明为抛出。我认为问题出在我不太了解的异常上。我被困在这里好几天了,由于这个异常问题,我无法研究其余的数据结构。因此,任何有关如何修复此问题并运行此问题的帮助都会非常有帮助。

最佳答案

你真的应该阅读tutorial关于异常(exception)情况并彻底解决它。这样您将更好地理解异常。

你的问题是方法Matching.matching()。您在方法的实现中使用了 ArrayStack.push(Object)ArrayStack.topAndpop() 方法。但这些方法被声明为(可能)抛出 EmptyStackException

您的matching方法不会处理该异常。 必须捕获或抛出异常。这就是编译器告诉您的内容。因此,对于第一次出现的方法,将方法声明为

public boolean matching() throws EmptyStackException

关于java - java中使用堆栈匹配括号中的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23589683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com