2016-12-25 39 views
0

我想以某種方式將JTextField中的文本存儲到數組中,然後對其進行求和。將JTextField文本存儲到數組和總和 - Java

btn.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
    //fldi is the JTextField I want to get text from 
    int ii = Integer.parseInt(fldi.getText()); 
    } 
}); 

接下來我應該做什麼?我怎麼能從那裏分割文本,例如,如果用戶輸入是「256」我認爲它應該像「2」,「5」,「6」一樣存儲在數組中。

編輯: 所以傑克·米勒的幫助後,我已經有了:

String input = fldi.getText(); 
      int sum = 0; 

      int[] values = new int[input.length()]; 
      for(int i = 0; i < input.length(); i++) { 
      int number; 
      if(input.substring(i, i+1).equals("-")) { 
       number = Integer.parseInt(input.substring(i, i+2)); 
      } else { 
       number = Integer.parseInt(input.substring(i, i+1)); 
      } 
      values[i] = number;   
       sum = sum + values[i]; 
      } 

      fldwo.setText(Integer.toString(sum)); 

但是當我嘗試它像「-2」和「-1」的值數組存儲4個值「負數-2 「,」2「,」-1「,」1「,最後的和爲0,但應該是-3。

+0

需要更多細節。數字總是單個數字嗎?等等 – DarkV1

+0

不,他們可以有任何長度 – wolverine961

+0

不要馬上解析它。將輸入存儲到字符串中,使用循環使用.substring()遍歷字符串中的每個字符,然後解析每個單獨的數字並存儲到一個int數組中。 –

回答

1

不要馬上解析它。將輸入存儲到字符串中,使用循環使用.substring()遍歷字符串中的每個字符,然後解析每個單獨的數字並存儲到一個int數組中。

String input = fldi.getText(); 
int[] values = new int[input.length()]; 
for(int i = 0; i < input.length(); i++) { 
    values[i] = Integer.parseInt(input.substring(i, i+1)); 
} 

如果輸入256,那麼陣列將有3:2,5,6

編輯

對於負數,你需要有一個檢查字符「 - 」表示負數。然後,您將使用substring(i, i+2)取兩個字符,而不是一個( - 和數字本身)。你也不需要數組。您可以直接將您分析的每個數字添加到總和中。你也應該使用while循環,並自己增加i。如果你發現一個負數,您正在使用2個字符,這意味着你需要按2而不是1:

int sum = 0; 
    int i = 0; 
    while(i < input.length()) { 
     int number; 
     if(input.substring(i, i+1).equals("-")) { 
      number = Integer.parseInt(input.substring(i, i+2)); 
      i += 2; 
     } else { 
      number = Integer.parseInt(input.substring(i, i+1)); 
      i++; 
     } 
     sum += number; 
    } 

一個例子增量I:

用戶輸入125-35。前三個字符不會等於「 - 」,因此它們將被簡單解析並存儲到values數組中。一旦你到達第四個字符(第三個索引),字符將是一個「 - 」,所以if語句將導致數字等於-3,因爲子字符串現在返回兩個字符而不是一個字符。

+0

謝謝!我得到它的工作... – wolverine961

+0

不,你應該像這樣解析:Integer.parseInt(input.substring(i,i + 1)); – wolverine961

+0

@DontKnowMuchButGettingBetter對不起。在移動設備上發送了該答案,因此意外地將該部分留下。更新 –

相關問題