1. 算法思路
1.1 把表达式转换为字符串数组,
String biaoda = "(((1+(2)-6))";
char biao[] = biaoda.toCharArray();
1.2 设置一个计数器,左括号+1,右括号-1,表达式中计算完毕后,如果为0表示配对
int top = 0;// 计数,左括号 1,右括号 -1,最后总和0则匹配
boolean end = true;// true 表示匹配
1.3 循环遍历表达式字符数组,与“(“,”)”进行对比
for (int i = 0; i < biao.length; i++){
if (biao[i] == '('){
top++;
}else if (biao[i] == ')'){
if (!(top == 0)){
top--;
}
else {
System.out.println("括号不匹配 - -");
end = false;
return;
}
}
}
1.4 遍历完进行判断
if (top == 0 && end){
System.out.println("括号匹配")
}
else if (top != 0 && end){
System.out.println("括号不匹配")
}
2. 完整代码
package com.tangyuan;
public class ExceptionMatch {
public static void main(String[] args) {
int top = 0;
boolean end = true;
String biaoda = "(((1+(2)-6))";
char[] biao = biaoda.toCharArray();
System.out.println("表达式: " + biaoda);
for (int i = 0; i < biao.length; i++){
if (biao[i] == '('){
top++;
}else if (biao[i] == ')'){
if (!(top == 0)){
top--;
}
else {
System.out.println("括号不匹配 - -");
end = false;
return;
}
}
}
System.out.println("----");
if (top == 0 && end){
System.out.println("括号匹配");
}
else if (top != 0 && end){
System.out.println("括号不匹配");
}
}
}