0

我正在进行数组练习,目前我正停留在其中一种变体上

  • 我必须使用一个数组(没有数组列表)来收集最大数量为 100 个输入的用户输入,如果插入负数,输入必须停止。
  • 然后程序将用户输入的每个值打印在单独的行上,其中“Above”、“Below”或“EqualTo”与输入的平均值相关。

问题:-我目前陷入了如何将加载方法中的输入值获取到打印方法上的正确位置的问题。该程序将编译,但只会返回一个等于 0 的 average1。任何帮助表示赞赏,我只是不能使用数组列表

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");
        }
    }
 }
}
4

1 回答 1

1

那是因为您没有将平均值保存到全局变量average1,而是保存到局部变量。这就是为什么average1返回getAverage()等于零的原因。

将方法中的以下行load()

double average1 = sum / used;

average1 = sum / used;
于 2013-10-09T05:34:45.020 回答