2013-10-09 70 views
0

我在陣列上的鍛鍊身體的中段,我現在被困在其中從不同的方法找到一個循環的平均值?

  • 我必須使用一個陣列(沒有的ArrayList)來收集用戶輸入用的 最大數量的變化之一100個輸入,如果插入負數 ,輸入必須停止。
  • 然後,程序將在單獨的 行上打印用戶輸入的每個值,其中「Above」,「Below」或「EqualTo」與輸入的平均值 有關。

問題: -我目前停留在我應該如何獲得從負載法的輸入值插入打印方法正確的斑點。該程序將編譯,但只會返回等於零的平均值1。任何幫助表示讚賞,我只是不能使用ArrayList

import java.util.Scanner; 

public class ScoreSetNumber3 
{ 
private int[] scores; 
private static final int SIZE= 100; 
private double average1; 
Scanner keyboard = new Scanner(System.in); 

public ScoreSetNumber3() 
{ 
    scores = new int[SIZE]; 
} 

public void load() 
{ 
System.out.println("Please enter scores"); 

double sum = 0; 

for(int used = 0; used < scores.length; used++) 
{ 
    scores[used] = keyboard.nextInt(); 
    if(scores[used] >= 0) 
    { 
    sum += scores[used]; 
    } 

    else 
    { 
    System.out.println("End of Inputs"); 

    double average1 = sum/used; 
    System.out.println("Average value of array elements is" + " " + average1); 
    break; 
    } 
    } 
} 

public double getAverage() 
{ 
    return average1; 
} 

public void print() 
    { 

     for(int used=0; used < scores.length; used++) 
     { 
      if(scores[used] > getAverage()) 
     { 
      System.out.println(scores[used] + " Above"); 
     } 

     else if(scores[used] == getAverage()) 
     { 
      System.out.println(scores[used] + " EqualTo"); 
     } 

     else 
     { 
      if(scores[used] < 0) 
      { 
      break; 
      } 
      System.out.println(scores[used] + " Below"); 
     } 
    } 
} 
} 

回答

1

那是因爲你不平均保存到全局變量average1而是一個局部變量。這就是爲什麼average1返回getAverage()等於零。

變化load()方法下面線從

double average1 = sum/used; 

average1 = sum/used;