2017-07-25 77 views
-1

我有一個計算器我試圖做的一個問題。 首先,我必須說我的想法,這個想法是,我第一次在一個ArrayList中分離出來的一切,例如:ConcurrentModificationException的在Java計算器

[12, +, (, 236, -, 7, ×, 23,), +, 5!, -, 3, ^, 5] 

接下來,我刪除列表中的部分,並用一個數字代替它,所以如果我們使用前面的例子:

[12, +, (, 236, -, 7, ×, 23,), +, 5!, -, 3, ^, 5] -> 
[12, +, 215, +, 5!, -, 3, ^, 5] -> 
[12, +, 215, +, 120, -, 243] and so on.. 

但是我有一個問題。 我計算[3, ^, 5]的方式是: 首先我檢查是否有在通過用於循環該ArrayList ^,然後我使2個變量之一,其具有的3值第一數目0的索引和所述另一個2具有的5值,然後我做第三個變量是答案,之後我轉這雙爲一個字符串的答案,然後我刪除3^5從列表中的第一個數字的加答案3這是0,問題是當我嘗試答案變成一個字符串的例外發生(ConcurrentModificationException),我搜索一下吧,我發現,由於某些原因,我不能把一個變種從類型到我的情況類型iable。我想知道是什麼原因,以及如何解決它。

+3

重複的https://stackoverflow.com/questions/223918/iterating-through-a-collection-avoiding-concurrentmodificationexception-when-re/此外,它是更好地看到和閱讀它的描述的實際代碼 –

回答

0

你的問題是你在修改ArrayList而迭代for循環是錯誤的,如果你只需要從列表中刪除值,那麼你可以使用iterator.remove,但是如果你還需要添加新值 - 使用另一個實例ArrayList