编写一java程序,判断表达式中圆括号是不是匹配
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写一java程序,判断表达式中圆括号是不是匹配相关的知识,希望对你有一定的参考价值。
java-- 匹配[()]
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test
//匹配()[]
public static boolean check(String expr)
if(expr==null || "".equals(expr)) return true;
List<String> list=new ArrayList<String>();
Map<String,String>map=new HashMap<String,String>();
map.put("(", ")");
map.put("[", "]");
map.put("", "");
for(int i=0;i<expr.length();i++)
String ch=expr.charAt(i)+"";
if(map.keySet().contains(ch))
list.add(ch);
else if(map.values().contains(ch))
if(list.isEmpty() || !ch.equals(map.get(list.get(list.size()-1))))
return false;
else
list.remove(list.size()-1);
return list.isEmpty();
public static void main(String[] args)
System.out.println(check("([])"));
System.out.println(check("a(b[cef(s)])"));
System.out.println(check("([]]]])"));
参考技术A import java.util.LinkedList;
public class Test
public static void main(String[] args)
System.out.println(isMatchs("(((()()())))"));
System.out.println(isMatchs("))))))))(1+1+1+1+1)((1+(1+1)))"));
/**
* 只包含括号,判断括号是否匹配
* @param express 你的表达式
* @return
*/
public static boolean isMatchs(String express)
//如果表达式是空的,匹配
if(express == null||express.trim().equals(""))
return true;
LinkedList<Character> linkedList = new LinkedList<Character>();
char[] ch = express.toCharArray();
for(int i = 0;i< ch.length;i++)
if(ch[i] == '(')
linkedList.addLast(ch[i]);
else if(ch[i] == ')')
while(linkedList.size()>0&&(linkedList.peekLast() != '(')&&(linkedList.peekLast() != ')'))
linkedList.removeLast();
if(linkedList.size()>0&&linkedList.peekLast() == '(')
linkedList.removeLast();
else
linkedList.addLast(ch[i]);
else
linkedList.addLast(ch[i]);
System.out.print("去完括号linkedList:");
out(linkedList);
//到最后没有括号剩余了
if((!linkedList.contains('(')&&!linkedList.contains(')')))
return true;
else
return false;
/**
* 输出
* @param linkedList
*/
public static void out(LinkedList<Character> linkedList)
for(Character character:linkedList)
System.out.print(character +"");
System.out.println();
参考技术B 如果匹配返回true 不匹配返回false 表达式可自行改写。
public class test1
public static void main(String[] args) throws Exception
String a = "(2+3)*3";
String b = "()";
int n = 0;
int m = 0;
char item1 = 0;
char item2 = b.charAt(0);
for (int i = 0; i < a.length(); i++)
item1 = a.charAt(i);
n = n + 1;
item2 = b.charAt(1);
for (int i = 0; i < a.length(); i++)
item2 = a.charAt(i);
m = m + 1;
if( n == m)
System.out.println(true);
else
System.out.println(false);
java中switch case怎么表示范围
参考技术A 从原理上来阐述这个问题:switch(表达式)
case 常量表达式1:
语句1;
....
case 常量表达式2:
语句2;
default:
语句;
1.default就是如果没有符合的case就执行它,default并不是必须的.
2.case后的语句可以不用大括号.
3.switch语句的判断条件可以接受int,byte,char,short,不能接受其他类型.
4.一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break,利用这一特性可以让好几个case执行统一语句.
原理归原理,下面是几个容易混淆的例子.
1.标准型(case后面都有break语句)
int
i=3;
switch(i)
case 1:
System.out.println(1);
break;
case 2:
System.out.println(2);
break;
case 3:
System.out.println(3);
break;
default:
System.out.println("default");
break;
输出结果:
3 参考技术B 从原理上来阐述这个问题:
switch(表达式)
case 常量表达式1:
语句1;
....
case 常量表达式2:
语句2;
default:
语句;
1.default就是如果没有符合的case就执行它,default并不是必须的.
2.case后的语句可以不用大括号.
3.switch语句的判断条件可以接受int,byte,char,short,不能接受其他类型.
4.一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break,利用这一特性可以让好几个case执行统一语句.
原理归原理,下面是几个容易混淆的例子.
1.标准型(case后面都有break语句)
int
i=3;
switch(i)
case 1:
System.out.println(1);
break;
case 2:
System.out.println(2);
break;
case 3:
System.out.println(3);
break;
default:
System.out.println("default");
break;
输出结果:
3本回答被提问者采纳
以上是关于编写一java程序,判断表达式中圆括号是不是匹配的主要内容,如果未能解决你的问题,请参考以下文章
试编写一个算法从检查一个Java语言中的大括号方括号小括号是不是配对,若能够全?
Java堆栈的应用1----------堆栈的自定义实现以及括号匹配算法的Java实现
写一个正则,java的,需要匹配多个括号,如判断 11(22(234)(as(fds) 是不是括号都是不是配对正确了