要求: 设计实现一个类目标实现键盘输入的括号对是否匹配,要求测试过程用栈的方式来完成。建议栈的实现采用ArrayList或LinkedList接口完成。
import java.util.LinkedList;
import java.util.Scanner;
public class Stack {
private LinkedList<Object> linkedList = new LinkedList<Object>();
public Stack() {
}
public void push(Object obj) {//入栈
linkedList.addFirst(obj);
}
public Object pop() {//出栈
if (isEmpty()) {
System.out.println("匹配失败!");
}
return linkedList.removeFirst();
}
public void clear() {//清空链表
linkedList.clear();
}
public Object peek() {//查看栈顶元素
if (isEmpty()) {
System.out.println("栈为空!");
}
return linkedList.peekFirst();
}
public int size() {//求长度
return this.linkedList.size();
}
public boolean isEmpty() {//判断是否为空
return linkedList.isEmpty();
}
public static void main(String[] args) {
Stack s = new Stack();
System.out.println("输入需检测的括号:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
String[] arr = new String[n];
if(n%2 == 1){
System.out.println("false");
scanner.close();
return;
}
for (int i = 0; i < n; i++) {
arr[i] = scanner.next();
}
for (int i = 0; i < n; i++) {
if ("(".equals(arr[0]) == false) {
System.out.println("匹配失败");
return;
}
if ("(".equals(arr[i])) {
s.push("(");
}
if (")".equals(arr[i])) {
if (s.isEmpty() == true) {
System.out.println("匹配失败!");
return;
}
s.pop();
}
}
if (s.isEmpty()) {
System.out.println("匹配成功!");
} else {
System.out.println("匹配失败!");
}
scanner.close();
}
}