2017-07-16 148 views
0

我有一個程序,生成一個數字列表,並計算所有的總數,並將它們分成三個不同的列表。一個是所有數字,另外兩個是偶數和奇數,然後打印偶數和奇數列表。生成隨機數 - 納入列表 - 打印列表

或某些原因,當我嘗試打印出這兩個列表時,它只打印ArrayList中的第一個數字給我沒有錯誤消息。

我的代碼:

import java.util.Random; 
import java.util.ArrayList; 

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

Random Generate = new Random(); 
ArrayList<Double> List = new ArrayList<>(); 
ArrayList<Double> Even = new ArrayList<>(); 
ArrayList<Double> Odd = new ArrayList<>(); 


double number; 
double total = 0; 
double totalEven = 0; 
double totalOdd = 0; 
double averageWhole; 
double averageEven; 
double averageOdd; 

System.out.println("Generating Numbers:");  
for (int Repeater = 0; Repeater < 10; Repeater++) { 
    number = Generate.nextInt(100); 
    List.add(number); 
} 
System.out.println("Loaded... " + "Putting Numbers Into List"); 
System.out.println(); 

for(int Insert = 0; Insert < 3; Insert++) { 
    System.out.println("Adding To List..."); 
} 
System.out.println("List Completed!"); 
System.out.println(); 
System.out.println(); 
for (int x = 0; x < List.size(); x++) { 
    total += List.get(x); 
    //Complicated Code --- really big for loop try to simplify later. 
    if (List.get(x) % 2 == 0) { 
     Even.add(List.get(x)); 
    } 
    else { 
     Odd.add(List.get(x)); 
    } 
} 
System.out.println("Your Total Is: " + total); 
System.out.println(); 
System.out.println(); 
System.out.println("Even Numbers:" + "\t" + "Odd Numbers"); 

for (int Output = 0; Output < Even.size() && Output < Odd.size(); Output++)   
{ 
    System.out.println(Even.get(Output) + "\t" + "\t" + Odd.get(Output)); 
} 
averageWhole = total/List.size(); 
System.out.println("Average of All Numbers:  " + "Average of All Even Numbers:  "+ "Average of all Odd Numbers:  " ); 
for (int averageE = 0; averageE < Even.size(); averageE++) { 
    totalEven = totalEven + Even.get(averageE); 
} 
averageEven = totalEven/Even.size(); 

for (int averageO = 0; averageO < Odd.size(); averageO++) { 
    totalOdd = totalOdd + Odd.get(averageO); 
} 
averageOdd = totalOdd/Odd.size(); 

System.out.print(averageWhole + "\t" + "\t" + "\t" + " " + averageEven + "\t" + "\t" + "\t" + "\t" + "  " + averageOdd); 
System.out.println(); 
System.out.println(); 
System.out.println("Command Complete..."); 

抱歉它是如此緊湊 - 在2/3周 - - 謝謝學習java!

+2

請縮進代碼正確的可讀性。 – CodingNinja

回答

0

打印奇數和偶數時,當較短的列表完成時,循環中的條件將被滿足,因此在打印所有數字之前停止打印。您將打印分爲兩個單獨的循環。

for (int i = 0; i < Even.size(); i++) { 
    System.out.println(Even.get(i)); 
} 

for (int i = 0; i < Odd.size(); i++) { 
    System.out.println(Odd.get(i)); 
} 

請注意,Java中的變量應以小寫字母開頭。 Even,Odd,Output等應該是even,odd,output

0

另一種替代蓋伊的代碼保持相同的格式:

for (int Output = 0; Output < Even.size() || Output < Odd.size(); Output++) { 
String even = "-"; 
if(Output < Even.size()){ 
    even = Even.get(Output).toString(); 
}//end of if 
String odd = "-"; 
if(Output < Odd.size()){ 
    odd = Odd.get(Output).toString(); 
} 
System.out.println(even + "\t" + "\t" + odd); 
}