2015-07-03 157 views
5

我正在爲一個夏季java課程做一個簡單的任務,希望你們能看看我的代碼,看看我做的方式是否是最好的方法。目的是創建一個至少有25個元素的簡單int數組,並使用循環遍歷它併合並所有元素。我有一些問題,但看起來像我得到它的工作。在我解決問題之後,我做了一些小小的研究,看到一些人們使用For Each循環(增強循環)的類似東西。這會是一個更好的選擇嗎?我有點困惑於最好的方式來使用,而不是普通的循環。數組元素的總和

無論如何,任何評論或批評幫助我成爲更好的程序員!

public class Traversals { 

    public static void main(String[] args) { 

     int absenceTotal = 0; 
     // initialize array with 30 days of absences. 
     int absencesArr[] = { 1, 3, 0, 9, 8, 23, 1, 
       11, 23, 5, 6, 7, 10, 1, 5, 
       14, 2, 4, 0, 0, 1, 3, 2, 1, 
       1, 0, 0, 1, 3, 7, 2 }; 

     for (int i = 0; i < absencesArr.length; i++) { 
      absencesArr[i] += absenceTotal; 
      absenceTotal = absencesArr[i]; 
     } 
     System.out.println("There were " + absenceTotal + " absences that day."); 
    } 
} 
+8

以供將來參考,這種問題會更適合codereview.stackexchange.com。 –

+1

這個問題和這個類似嗎? https://stackoverflow.com/questions/4550662/how-do-you-find-the-sum-of-all-the-numbers-in-an-array-in-java –

+2

你應該縮進你的'主要' – Quill

回答

7

不要修改數組。我寧願for-each loop。你應該考慮到可能會有很多的學生,所以我可能會使用long來代替sum。並格式化輸出。把它們一起成類似

long sum = 0; 
for(int i : absencesArr) {  
    sum += i; 
} 
// System.out.println("There were " + sum + " absences that day."); 
System.out.printf("There were %d absences that day.%n", sum); 
+0

老實說,我嘗試過類似的東西,但它似乎只是加上索引,所以我搞砸了,直到我得到了我上面的東西。我會再試一次,因爲我只是看着作業,它想要一個額外的循環來打印出我不知道的方式,因爲我改變了陣列。 – NoobCoderChick

+0

我可能會使用long long,因爲我認爲int和long在某些平臺上可能具有相同的大小 – ggrr

+0

@amuse不在Java中,Java沒有「long long」。另見[JLS-4.2。原始類型和值](http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2)。 –

4
public class Traversals { 

    public static void main(String[] args) { 

     int absenceTotal = 0; 
     // initialize array with 30 days of absences. 
     int absencesArr[] = { 1, 3, 0, 9, 8, 23, 1, 
       11, 23, 5, 6, 7, 10, 1, 5, 
       14, 2, 4, 0, 0, 1, 3, 2, 1, 
       1, 0, 0, 1, 3, 7, 2 }; 

     for (int i = 0; i < absencesArr.length; i++) { 
      // remove this 
      //absencesArr[i] += absenceTotal; 
      absenceTotal += absencesArr[i]; //add this 
     } 
     System.out.println("There were " + absenceTotal + " absences that day."); 
    } 
} 
2

除了一些不錯的貢獻,我的for-each loop風扇,並且通常在一行做到這一點。

for(int i : absencesArr) absenceTotal += i; 
System.out.printf("There were %d absences that day.", absenceTotal); 

但在某些情況下,當我想要在我的對象大小/長度/計數控制,我會用for loop像下面的例子:

for (int i = 0; i < absencesArr.length; i++) absenceTotal += absencesArr[i]; 
System.out.printf("There were %d absences that day.", absenceTotal); 

如果我需要有一個以上的for loopfor-each loop裏面的代碼行,然後我會把它們全部放在花括號內{ more than one line of code }

0

在Java 8,你可以使用流API:

public class Traversals { 
    public static void main(String[] args) { 

     int absenceTotal = 0; 
     // initialize array with 30 days of absences. 

     int absencesArr[] = { 1, 3, 0, 9, 8, 23, 1, 
       11, 23, 5, 6, 7, 10, 1, 5, 
       14, 2, 4, 0, 0, 1, 3, 2, 1, 
       1, 0, 0, 1, 3, 7, 2 }; 

     absenceTotal = IntStream.of(array).sum(); 

     System.out.println("There were " + absenceTotal + " absences that day."); 
    } 
}