2015-07-20 27 views
0

我正在用Java編寫一個計算器,我試圖使用一個以上的數學運算符來添加/減去/乘/除兩個以上的數字成爲可能。我試圖把數字放在數組的不同位置,但由於某種原因,它把所有的數字放在0的位置。不知道爲什麼會發生這種情況,因爲我做了一個for循環,給循環添加一個「i」,它應該改變陣列的地方。 (也numDisplay是JTextField的)Array只將數組放在第一個位置

add.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent event) { 
      for (int i = 0; i < array.length; i++) { 
       array[i] = numDisplay.getText(); 
       addDouble = Double.parseDouble(array[i]); 
       System.out.println(array[i] + " at place " + i); 
       numDisplay.setText(""); 
       break; 
      } 
     } 

    }); 
+0

你是什麼意思的「它把所有的數字在0」?你認爲在'for'循環體的末尾有什麼'break'呢? –

+0

@JonSkeet我想要的是每次按下添加按鈕時,都是爲了添加我想要添加到數組中的數字。如果我刪除中斷,它會將零增加到所有其他地方。 –

+0

你意識到每次按下按鈕時,它都會再次啓動循環,對嗎?這聽起來像你應該有一個'列表'而不是,那麼你可以只使用'list.add(numDisplay.getText())' –

回答

4
for (int i = 0; i < array.length; i++) { 
    ... 
    break; // breaks after first iteration 
} 

你打破了循環的第一個迭代之後,所以你只有數組中的一個數字。

我試圖刪除破,但隨後它會自動

加入零到每一個其他地方,你array[i] = numDisplay.getText();第一,然後在你的numDisplay.setText("");循環結束。所以在後續的迭代中,它會嘗試將空字符串轉換爲double,最終變爲零。

我想要的是每次按下添加按鈕時,都是爲了添加我想要添加到數組中的數字。

A List<Double>在這裏會更好。您可以在事件偵聽器中執行list.add(someDoubleValue)。否則,您需要跟蹤到目前爲止添加到數組中的元素總數,然後在適當的位置插入一個新元素(如果有空間的話)。

+0

+1。我覺得OP困惑與繼續打破,但繼續將不必要,因爲它將在循環體的末尾 – GregH

+0

我試圖刪除休息,但然後它將零自動添加到其他每個地方。 –

+0

我想要的是,每次按下添加按鈕時,都會將計算器中的數字添加到數組中。 –

相關問題