在操作数和运算符之间插入空格,让字符串越界
Inserting spaces In between operand and operators, getting String out of Bounds
我有一项任务是创建一个将中缀表达式转换为后缀的程序。我需要在操作数和运算符之间插入空格,出于某种原因我不断收到 StringIndexOutOfBounds。这是我的 java 流程代码。
public class Processor {
public String addSpace(String str){
String finalstr = "";
for (int i = 0; i < str.length(); i++) {
if(Character.isDigit(str.charAt(i))){
int x = i;
String temp = "";
do{
temp+=str.charAt(x);
x++;
}while(Character.isDigit(str.charAt(x)));
finalstr+=(temp+" ");
System.out.println(temp+" added to final");
i=(x-1);
System.out.println(x+" is x and i is "+i);
}
else if(isOperator(str.charAt(i))){
finalstr+=(str.charAt(i)+" ");
}
}
return finalstr;
}
public boolean isOperator(char a){
switch(a){
case '+':
case '-':
case '/':
case '*':
case '(':
case ')':
return true;
default: return false;
}
}
在这个循环中
do {
temp += str.charAt(x);
x++;
} while (Character.isDigit(str.charAt(x)));
您增加 x
并在不检查该字符是否存在的情况下获取位置 x
处的字符。在字符串的末尾,如果字符是数字,则超出字符串的长度
我有一项任务是创建一个将中缀表达式转换为后缀的程序。我需要在操作数和运算符之间插入空格,出于某种原因我不断收到 StringIndexOutOfBounds。这是我的 java 流程代码。
public class Processor {
public String addSpace(String str){
String finalstr = "";
for (int i = 0; i < str.length(); i++) {
if(Character.isDigit(str.charAt(i))){
int x = i;
String temp = "";
do{
temp+=str.charAt(x);
x++;
}while(Character.isDigit(str.charAt(x)));
finalstr+=(temp+" ");
System.out.println(temp+" added to final");
i=(x-1);
System.out.println(x+" is x and i is "+i);
}
else if(isOperator(str.charAt(i))){
finalstr+=(str.charAt(i)+" ");
}
}
return finalstr;
}
public boolean isOperator(char a){
switch(a){
case '+':
case '-':
case '/':
case '*':
case '(':
case ')':
return true;
default: return false;
}
}
在这个循环中
do {
temp += str.charAt(x);
x++;
} while (Character.isDigit(str.charAt(x)));
您增加 x
并在不检查该字符是否存在的情况下获取位置 x
处的字符。在字符串的末尾,如果字符是数字,则超出字符串的长度