请问一个拆分String的问题 请问:我有一个String 一个计算式,例如:0.08+5.6-(7-3.3)*3我要把运算符和数字都拆开,放到栈里,应该怎么弄 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String str=0.08+5.6-(7-3.3)*3; String temp=null; for(i=0,j=0;i<str.length;i++){ if(str[i]==普通字符) temp[j++]=str[i]; else if(str[i]=运算符) { 将str[i]入运算符栈; 将temp转换后入数字栈; 并将j=0; }} 如果你的程序是要进行表达式求值的话,还要根据优先级进一步细分! subString replace "字符串".subString(); 这些函数能解决你的问题,剩下的就是设计下思路和工作量了。 String str = "0.08+5.6-(7-3.3)*3";int index = 0;for(int i = 0; i < str.length; i++) { String num;//保存数字 char oper = str.charAt(i);//保存操作符 if(oper == '+' || oper == '-' || oper == '*' || oper == '/') { num = str.substring(index, i); //将数字和操作符保存到堆栈中 index = i; }}类似即可... char character = ' '; boolean isNumber = Character.isDigit(character) || character == '.'; if(isNumber){ ... }else{ .... } 给个思路C++的话这样做2个栈 一个optr 寄存运算符一个opnd 寄存操作数或者运算结果依次读入表达式中的每个字符,若是操作数进opnd,若是运算符则和optr栈的栈顶运算符比较优先权后作相应操作 public static void main(String [] args) throws Exception{ System.out.println("please input a string..."); Scanner s = new Scanner(System.in); String string =new String(); byte[] bs =new byte[4096]; string = s.next(); int l=string.length(); for(int i=0;i<l;i++){ System.out.println(string.charAt(i)); } } 关于远程视频监控问题? 添加坦克出错--关于马士兵坦克大战项目的问题 急!有关存取数据的一个瓶颈问题.... JButton 问题 【新手提问】请前辈帮我看看这段代码有没有什么问题..为什么不能显示JTable呢!!! <<java解惑>>上看到的一个小问题.大家来看看,很有意思的 散分 请求解决问题!关于String的排序问题! 高分请教序列化问题(100分)! JAVA内部类在程序中的作用是什么? 在Jcreator中使用Swing的问题,大家帮帮忙。 学了JSE之后对学J2EE有什么帮助吗?
String temp=null;
for(i=0,j=0;i<str.length;i++){
if(str[i]==普通字符)
temp[j++]=str[i];
else if(str[i]=运算符)
{
将str[i]入运算符栈;
将temp转换后入数字栈;
并将j=0;
}
}
如果你的程序是要进行表达式求值的话,还要根据优先级进一步细分!
int index = 0;
for(int i = 0; i < str.length; i++) {
String num;//保存数字
char oper = str.charAt(i);//保存操作符
if(oper == '+' || oper == '-' || oper == '*' || oper == '/') {
num = str.substring(index, i);
//将数字和操作符保存到堆栈中
index = i;
}
}类似即可...
char character = ' ';
boolean isNumber = Character.isDigit(character) || character == '.';
if(isNumber){
...
}else{
....
}
2个栈 一个optr 寄存运算符
一个opnd 寄存操作数或者运算结果依次读入表达式中的每个字符,若是操作数进opnd,若是运算符则和optr栈的栈顶运算符比较优先权后作相应操作
System.out.println("please input a string...");
Scanner s = new Scanner(System.in);
String string =new String();
byte[] bs =new byte[4096];
string = s.next();
int l=string.length();
for(int i=0;i<l;i++){
System.out.println(string.charAt(i));
} }