在Java中,设计一个算法,判断一个算术表达式中的括号是不是配对。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java中,设计一个算法,判断一个算术表达式中的括号是不是配对。相关的知识,希望对你有一定的参考价值。

还需要分别指出哪个左括号与哪个右括号对应??

参考技术A 算法:
String str="5+(4-3))" 表达式
char kuohao[]; 用作括号堆栈
扫描str中的字符
1如果是(则入栈
2如果是)
a如果战不空出栈
b如果栈空,不匹配。算法结束
最后栈空则匹配

下面是我的实现

public class biaodashi

public static void main(String args[])

int top=0;//堆指针
boolean end=true;//不匹配时只输出一次

char stack[]=new char[100];//存括号

String biaoda="(((1+(2)-6))";//表达式
char biao[]=biaoda.toCharArray();//将字符串转化成字符数组
System.out.println("表达式: "+biaoda);

for(int i=0;i<biao.length&&end;i++)//遍历表达式中所有字符

if(biao[i]=='(')//如果是(则入栈

stack[top]='(';
top++;

else if(biao[i]==')')//如果是)则出战

if(!(top==0))
top--;
else

System.out.println("括号不匹配");
end=false;




//除循环两种可能

if(top==0&&end)
System.out.println("括号匹配");//出循环stack空
else if(top!=0&&end)
System.out.println("括号不匹配");//出循环时stack不空



追问

如果只是看括号是否匹配,我建议用StringBuffer来做更简单。呵呵

追答

我也是刚学java不久,你不只是看括号匹配。那还有什么要求

追问

要求指出每一个左括号所对应的右括号

本回答被提问者采纳
参考技术B http://reallyafei.javaeye.com/blog/347736 参考技术C stack 用栈就可以 参考技术D 迭代字符串的每个字符,算一下(的数量和)的数量是不是一样的就行了呗追问

需要指出哪个左括号与哪个右括号对应

追答

没那么麻烦吧。。先判断左右数量是否一致,左边第二个和右边第二个肯定是对应的啊。。

追问

如果括号提出来是这样呢:
(()())(()()())

追答

如果是(,向右继续找(,看有几个(,就找第几+1个)
右括号同理

判断C语言算术表达式的合法性

从文件读入整数 N, 后跟2*N行字符串,两行一组。
每组第一行是预定义的变量(可以多个)。第二行字符串为一个预期的C语言算术表达式。
程序分别判断每个字符串,如果是正确的C语言算术表达式,输出OK;否则,输出其错误类型。如果一个表达式有多个错误,输出一个即可。
用N-S流程图表示处理逻辑(算法)。
设计10个测试数据。
希望大家给出程序代码,并且分析一下
zz

参考技术A 我晕,又是数据结构的东西。。。
自己去看一下《数据结构》(C语言版)(严蔚敏 吴伟民)
堆栈 那一节,有个表达式求值的详细的类C伪代码和说明
参考技术B C语言算术表达式内容这么多,你给个小的范围啊. 参考技术C 你可以看看这里的 http://zhidao.baidu.com/question/65846594.html

参考资料:http://zhidao.baidu.com/question/65846594.html

以上是关于在Java中,设计一个算法,判断一个算术表达式中的括号是不是配对。的主要内容,如果未能解决你的问题,请参考以下文章

栈练习之Example001-判断一个算术表达式中的括号是否正确配对

Java计算字符串中的数学表达式的值算法怎么写?

Java堆栈的应用1----------堆栈的自定义实现以及括号匹配算法的Java实现

[PTA][C语言][数据结构]判断表达式中括号是否匹配

数据结构 栈的应用——算术表达式求值

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