在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
自己去看一下《数据结构》(C语言版)(严蔚敏 吴伟民)
堆栈 那一节,有个表达式求值的详细的类C伪代码和说明 参考技术B C语言算术表达式内容这么多,你给个小的范围啊. 参考技术C 你可以看看这里的 http://zhidao.baidu.com/question/65846594.html
参考资料:http://zhidao.baidu.com/question/65846594.html
以上是关于在Java中,设计一个算法,判断一个算术表达式中的括号是不是配对。的主要内容,如果未能解决你的问题,请参考以下文章
栈练习之Example001-判断一个算术表达式中的括号是否正确配对