您的位置:首页 > 编程语言 > Java开发

java的括号匹配程序

2014-07-21 20:33 369 查看
利用栈进行的括号匹配程序

package zf;

import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream.GetField;

public class fourth {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String input;
while(true)
{
System.out.println("Error:missing right delimiter!");
System.out.flush();
input = getString();
if(input.equals(""))
break;
BracketChecker theck = new BracketChecker(input);
theck.check();
}

}

private static String getString() throws IOException {
// TODO Auto-generated method stub
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
return s;
//return null;
}

}

class stack
{
private int maxsize;
private char [] stackarray;
private int top;
public stack(int s)
{
maxsize = s;
stackarray = new char[maxsize];
top = -1;
}
public void push(char c)
{
stackarray[++top] = c;
}
public char pop()
{
return stackarray[top--];
}
public char peep()
{
return stackarray[top];
}
public boolean isEmpty()
{
return (top==-1);
}
public boolean isFull()
{
return top==maxsize-1;
}
}

class BracketChecker
{
private String input;
public BracketChecker(String in)
{
input = in;
}
public void check()
{
int stacksize = input.length();
stack stk = new stack(stacksize);
for(int j=0;j<input.length();j++)
{
char ch = input.charAt(j);
switch(ch)
{
case '{':
case '[':
case '(':
stk.push(ch);
break;
case '}':
case ']':
case ')':
if(!stk.isEmpty())
{
char chx = stk.pop();
if((ch=='}'&&chx!='{')||(ch==']'&&chx!='[')
||(ch==')'&&chx!='('))
{
System.out.println("Error!"+ch+"at"+j);
}
}
else
{
System.out.println("Error!"+ch+"at"+j);
}
break;
default:
break;
}
}
if(!stk.isEmpty())
{
System.out.println("Error:missing right delimiter!");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程 java