好的。所以我試圖編寫一個應用程序,以正確的操作順序解決問題(即PEMDAS,但沒有PE大聲笑)。我可能做錯了,但無論如何。我需要幫助的是,作爲數組中每個元素的迭代,如果它是一個運算符,我刪除兩個元素(運算符周圍的數字,因爲我將運算符替換爲正確的計算,所以具有三個元素的數組5 +5,將成爲一個元素的數組,10)這將是很好,但for語句的條件不會更新,換句話說,當我更新數組時,array.length變短,但是for-statement無法識別並繼續傳遞數組的邊界,這會導致outofbounds錯誤。解釋最好的辦法是我的代碼,所以這裏是:幫助更新循環條件
for (i = 0; i < splitEquation.length; i++){
if (splitEquation[i].equals("*")){
splitEquation[i] = Double.toString(Double.parseDouble(splitEquation[i - 1]) * Double.parseDouble(splitEquation[i + 1]));
splitEquation = removeIndex(splitEquation, i - 1);
splitEquation = removeIndex(splitEquation, i + 1);
solution += Double.parseDouble(splitEquation[i - 1]);
}
}
而且removeIndex():
private String[] removeIndex(String [] s, int index){
String [] n = new String[s.length - 1];
System.arraycopy(s, 0, n, 0, index - 1);
System.arraycopy(s, index, n, index - 1, s.length - index);
return n;
}
由於提前, -Eric
附:讓我知道如果你需要我的代碼做什麼任何澄清:)
但是這到底會不會越界?如果我刪除它,for語句將繼續。修改它是我能想到的唯一方法:/謝謝你! – Eric 2011-04-03 16:32:19
因爲'i - ;'它不會超出範圍 - 它將迭代器設置爲有效元素。然後它被循環遞增,並與'i
2011-04-03 16:37:36
修改數組的目的是什麼?你想結束一個計算值的數組?爲什麼不使用第二個數組作爲結果? – 2011-04-03 16:43:45