java新手的问题

来源:百度知道 编辑:UC知道 时间:2024/07/05 17:32:36
编写Main类,在其main方法中,由用户随意输入一般数学表达式,将该表达式保存到一个字符串变量中。通过Stack对象,判断该表达式的括号是否匹配正确,如表达式为(1+2)*3-6/(5-3))时,提示“括号匹配错误!”请人赐教不胜感谢。

人家只是检查括号而已,有没有要语义解析。
定义一个 int型的 count,表达式逐位解析
1、碰到‘(’解析下一位如果是(*,+,/)中的任何一个,返回错误,否则count加一;
2、碰到‘)’count减一;
3、如果count不为0返回错误;否则返回正确

public static String check(String str){
char c[]=str.toCharArray();
int count=0;
for(int i=0;i<c.length;i++){
if(c[i]=='('){
if(c[i+1]=='*'||c[i+1]=='+'||c[i+1]=='/')
return "括号匹配错误!";
count++;
}
if(c[i]==')') count--;
}
if(count!=0) return "括号匹配错误!";
return "括号匹配正确!";
}

这题目好像是编译器哦,

如果用正则表达式应该可以做出简单的判断。但复杂一些的就有点困难了。

我想想先。。。

具体点行吗??把你的代码贴出来 这样我不是很明白你的意思