恩,我要检测输入的分隔符,但是,在入栈的时候,top,应该是从-1加啊,为什么第一次入栈后,top从-1编程1了?importjava.util.*;publicclassbrackets2{publicstaticvoidmain(String[]...
恩,我要检测输入的分隔符,但是,在入栈的时候,top,应该是从-1加啊,为什么第一次入栈后,top从-1编程1了?
import java.util.*;
public class brackets2 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("input:");
String getString=in.nextLine();
char[] getChar=getString.toCharArray();
stack2 sta2=new stack2(getChar.length);
check che=new check();
che.checks(getChar, sta2);
}
}
class stack2{
private int top;
private int maxsize;
private char[] stackarray2;
public stack2(int size){
maxsize=size;
stackarray2=new char[size];
}
public void push(char c){
stackarray2[++top]=c;
}
public char pop(){
return stackarray2[top--];
}
public boolean isempty(){
return top==0;
}
public int gettop(){
return top;
}
}
class check{
public void checks(char[] chars,stack2 sta){
for(char c:chars)
{
char ch=c;
switch(ch)
{
case '(':
case '[':
case '{':
sta.push(ch);
System.out.println(" "+ch+ " "+sta.gettop());
break;
case ')':
case '}':
case ']':
if(!sta.isempty())
{
char chx=sta.pop();
if((ch==')')&&(chx!='(')
||(ch==']')&&(chx!='[')
||(ch=='}')&&(chx!='{'))
System.out.println("Error:"+ch);
break;
}
else System.out.println("Error: "+ch);
default:
break;
}
}
if(!sta.isempty())
System.out.println("missing right token ");
}
}
展开