1
錯誤: 異常在線程 「主」 java.lang.StringIndexOutOfBoundsException:字符串索引超出範圍:5 在java.lang.String.charAt(未知來源) 在Convert.main(Convert.java:16)這個錯誤和我的代碼之間有什麼錯?
公共類轉換{
public static void main(String[] args) {
int i=0;
int j=0;
char p[] = new char[10]; // postfix
Stk s = new Stk(); // stack
String str = new String(); // infix
str = JOptionPane.showInputDialog("Please enter a infix expression:");
while(str.length() >= 1)
{
if(operand (str.charAt(i)))
p[j++] = str.charAt(i);
else if (!operand(str.charAt(i)))
{
while(!s.isEmpty() && precedence(str.charAt(i)) <= precedence(s.stack[s.top]))
p[j++] = s.pop();
s.push(str.charAt(i));
}
i++;
}
while (!s.isEmpty())
{
p[j++] = s.pop();
}
String P = new String(p);
JOptionPane.showMessageDialog(null , "Postfix expression is : " + P);
}
public static boolean operand(char b)
{
if (b!='+' || b!='-' || b!='*' || b!='/')
return true;
else
return false;
}
public static int precedence(char c)
{
int x=0;
switch(c)
{
case '*':
case '/':
x=2;
break;
case '+':
case '-':
x=1;
break;
}
return x;
}
}
錯誤已更正,但輸出錯誤!例如,當我輸入「a + b * c」時,我會收到相同的字符串「a + b * c」,並且它會將表達式從中綴轉換爲後綴!請幫助我.. – endorbor
編輯了答案,問題出在你的'operand'方法中。 –
非常感謝您的幫助...... – endorbor