2012-09-20 17 views
3

我試圖實現從以下輸入以下的輸出:更改int數組的一系列串

Sample input: 
3 4 
2 1 
4 5 
-1 

Sample output: 
7 
3 
9 

到目前爲止,我有我的程序做所有的數學和我當用戶輸入一個負數時終止它。我的問題是,我無法以上述格式打印它。我的輸入/輸出的樣品低於:

9 9 
8 8 
9 -8 
[18, 16] 

這裏是我到目前爲止的代碼:

import java.util.ArrayList; 
import java.util.Scanner; 
    public class sums{ 
    public static void main(String[]args){ 
     int addition = 0; 
     int previous = 0; 
     ArrayList<String> sums = new ArrayList<String>(); 
     String sumsy = new String(""); 
     for (int i=0; i<=i;){ 
      Scanner in = new Scanner(System.in); 
      previous = in.nextInt(); 
      if (previous<0){ 
       break; 
      } 
      else { 
       addition = in.nextInt(); 
       if (addition<0) { 
        break; 
       } 
       else { 
        addition += previous; 
        sums.add(addition+""); 
       } 
      } 
     } System.out.println(sums); 
    } 
} 

我相信答案就在於以某種方式使用分隔符(「/ N」)某處,並讓我的整列數據打印出來就像字符串一樣。

對不起,這些小東西完全不見了。任何人都可以將我指向正確的方向嗎?

謝謝! -Helen

回答

1

System.out是一個PrintStream對象,它的println方法對於各種不同類型都是重載的。

在這種情況下,由於資金是ArrayList,你打電話println(Object x),它的工作原理是傳遞的對象上調用String.valueOf(x)(這反過來又要求x.toString()如果x不等於null),並打印生成的String

本質上,當您將除String或原語之外的其他東西傳遞給println時,您將委派打印到對象類的詳細信息。在這種情況下,因爲ArrayList是一個庫類,所以你無法控制這個。

爲了使它工作,你想要的方式,你需要遍歷中和的值,是這樣的:

for (String someSum : sums) { 
    System.out.println(someSum); 
} 

如果你不熟悉的循環語法,看到這樣的下半年頁面:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html

+0

一件小事,無關具體到你的問題:給你的變量和你的類使用相同的名字是一個糟糕的想法,因爲它會讓你的代碼更加混亂,因此,總是以大寫字母開始類名並且始終啓動其他類名字與小寫字母。這樣,你永遠不會意外地命名它們相同。 – CCC

+0

非常感謝!我不熟悉語法,所以我正在閱讀你現在發送的頁面。將變量重命名爲一個大寫/一個小寫 - 我沒有想到這一點,但它是完全有道理的。 – Helen

3
for (String sum : sums) System.out.println(sum) 

用這個代替

System.out.println(sums) 
0

資金是一個字符串列表,而不是一個字符串,所以在印刷它不會給你想要的東西。你有兩個選擇,你可以做 for(String i : sums){ System.out.println(i); }

,或者你可以讓資金一個StringBuilder並做sums.append(addition)然後System.out.println(sums.toString())

+0

只需使用'System.out.println(Arrays。toString(summs))'而不是手動執行 –

+0

,它不會得到她需要的換行符。 (你仍然可能有最簡單的方法來做到這一點,但'code sums.add(addition +「」);'需要用'code sums.add(addition +「\ n」)替換;' – BostonJohn

0

你真的有使用ArrayList?國際海事組織,這使得它比必要更復雜。從您的示例輸入中看來,您只需要對每對數字進行求和。這似乎並不需要數組。您可以將這兩個數字加在一起,然後立即打印出結果。