例如我有
String str = "1+2*-3/4-5"
我想格式化我的String str 并将其存储到新的String newStr 这样我的 newStr 的值为
1 + 2 * -3 / 4 - 5
到目前为止我到目前为止所做的事情产生了这个输出
1 + 2 * - 3 / 4 - 5
使用此代码
for(int i =0; i < str.length(); i++) {
perChar = str.charAt(i);
if(perChar == '+' || perChar == '-' || perChar == '*' || perChar == '/'){
newStr+= " "+perChar+" ";
continue;
}
str+=perChar;
}
答案 0 :(得分:3)
在这里使用你的代码是你的问题的解决方案,只需检查一个操作数是否在另一个操作数之前,如果是这样的话就不添加空格。
String str = "1+2*-3/4-5";
String newStr = "";
for(int i = 0; i < str.length(); i++) {
char perChar = str.charAt(i);
if(perChar == '+' || perChar == '-' || perChar == '*' || perChar == '/'){
if(str.charAt(i-1) == '+' || str.charAt(i-1) == '-' || str.charAt(i-1) == '*' || str.charAt(i-1) == '/'){
newStr = newStr + perChar;
} else {
newStr = newStr + perChar + " ";
}
} else {
newStr = newStr + perChar + " ";
}
}
System.out.println(newStr);
如果您希望实现计算器,您应该考虑将操作数存储在数据结构中以便于访问,例如数组。
并考虑将您的表达从中缀转换为postfix,因为这可能对您有用。