编写一java程序,判断表达式中圆括号是不是匹配

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写一java程序,判断表达式中圆括号是不是匹配相关的知识,希望对你有一定的参考价值。

java--  匹配[()]

import java.util.ArrayList;
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) 是不是括号都是不是配对正确了

洛谷 P1739 表达式括号匹配(Java)

设计一个判别表达式中左、右括号是不是配对出现的算法,采用啥数据结构最佳。

在c#请用Stack来检查程序的语句或公式是不是括号匹配