package c_stack.C_matching;
public class BracketChecker {
private String input;
public BracketChecker(String input) {
this.input = input;
}
public void check() {
int stackSize = input.length();
StackX theStack = new StackX(stackSize);
for (int j = 0; j < stackSize; j++) {
char ch = input.charAt(j);
switch (ch) {
case '{':
case '[':
case '(':
theStack.push(ch);
break;
case '}':
case ']':
case ')':
// 如果不为空
if (!theStack.isEmpty()) {
char chx = theStack.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 (!theStack.isEmpty()) {
System.out.println("Error:missing right delimiter");
}
}
}package c_stack.C_matching;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* 匹配
* @author Administrator
*
*/
public class BracketsApp {
public static void main(String[] args) throws IOException {
String input;
while (true) {
System.out.println("Enter a String");
System.out.flush();
input = getString();
if ("".equals(input)) {
break;
}
BracketChecker bracketChecker = new BracketChecker(input);
bracketChecker.check();
}
}
public static String getString() throws IOException {
String s = new BufferedReader(new InputStreamReader(System.in))
.readLine();
return s;
}
}package c_stack.C_matching;
public class StackX {
private int maxSize;
private char[] stackArray;
private int top;
public StackX(int s) {
maxSize = s;
stackArray = new char[s];
top = -1;
}
public void push(char j) {
stackArray[++top] = j;
}
public char pop() {
return stackArray[top--];
}
public char peek() {
return stackArray[top];
}
public boolean isEmpty() {
return top == -1;
}/*
* 栈锟角凤拷锟斤拷
*/
public boolean isFull() {
return top == maxSize - 1;
}
}
public class BracketChecker {
private String input;
public BracketChecker(String input) {
this.input = input;
}
public void check() {
int stackSize = input.length();
StackX theStack = new StackX(stackSize);
for (int j = 0; j < stackSize; j++) {
char ch = input.charAt(j);
switch (ch) {
case '{':
case '[':
case '(':
theStack.push(ch);
break;
case '}':
case ']':
case ')':
// 如果不为空
if (!theStack.isEmpty()) {
char chx = theStack.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 (!theStack.isEmpty()) {
System.out.println("Error:missing right delimiter");
}
}
}package c_stack.C_matching;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* 匹配
* @author Administrator
*
*/
public class BracketsApp {
public static void main(String[] args) throws IOException {
String input;
while (true) {
System.out.println("Enter a String");
System.out.flush();
input = getString();
if ("".equals(input)) {
break;
}
BracketChecker bracketChecker = new BracketChecker(input);
bracketChecker.check();
}
}
public static String getString() throws IOException {
String s = new BufferedReader(new InputStreamReader(System.in))
.readLine();
return s;
}
}package c_stack.C_matching;
public class StackX {
private int maxSize;
private char[] stackArray;
private int top;
public StackX(int s) {
maxSize = s;
stackArray = new char[s];
top = -1;
}
public void push(char j) {
stackArray[++top] = j;
}
public char pop() {
return stackArray[top--];
}
public char peek() {
return stackArray[top];
}
public boolean isEmpty() {
return top == -1;
}/*
* 栈锟角凤拷锟斤拷
*/
public boolean isFull() {
return top == maxSize - 1;
}
}