在用户定义的年数内计算四个季度的降雨量

时间:2014-07-22 05:18:41

标签: java

我是Java的新手,我正在尝试做任务......但我现在感到很失落。我们尚未介绍数组,因此我们的词汇量有限。

1。)修改您当前的代码,以便它可以处理多年的降雨数据。为用户提供选项,以提供他们想要在评估程序中输入的实际年数。该项目必须输出大多数降雨量和年降雨量最少的年份(即1年级,2年级等)。

以下是我的代码:

import java.util.Scanner;

public class Test2OF
{
   public static void main(String[] args) 
   { 
      Scanner scan = new Scanner(System.in); 
      double[] rainfall = new double[4]; 
      double totalRainfall = 0.0; 
      double max = 0, min  = 0;
      int year = scan.nextInt();
      int maxQuarter = 1;
      int minQuarter = 1;

      // Prompt user for the number of years
      System.out.println("Enter the number of years: ");
      year = scan.nextInt();

      for (int i=0; i < year*4; i++) 
      { 
         System.out.print("Enter rainfall for quarter " + (i+1) + ": "); 
         rainfall[i] = scan.nextDouble(); 
         totalRainfall += rainfall[i]; 
         if (i == 0)
         {
            max = min = rainfall[i];
         }

         {
            if (rainfall[i] > max) {
               max = rainfall[i];
               maxQuarter = i + 1;
            }
            if (rainfall[i] < min) {
               min = rainfall[i];
               minQuarter = i + 1;
            }
         }
     }

   System.out.println("Total rainfall = "+totalRainfall); 
   System.out.println("Average rainfall = "+(totalRainfall / 4.0)); 
   System.out.println("Max quarter rainfall = "+ max);
   System.out.println("Min quarter rainfall = " + min);
   System.out.println("Max quarter rainfall = "+ maxQuarter);
   System.out.println("Min quarter rainfall = " + minQuarter);

   }//end main 
}//end class

编译完成后,当我尝试将数据放入第5季时,我得到了这个例外。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
    at Test2OF.main(Test2OF.java:22)

关于如何确定哪一年的降雨量最多/最少,我也非常无能为力。

非常感谢您的帮助!非常感谢你。

3 个答案:

答案 0 :(得分:1)

<强>问题:

year*4

你的rainfall只有4号,这意味着它只适用于1年,有4个季度。

<强>溶液

您需要计算指定年数的季度数,然后使用year*4

调整数组大小

<强>样品:

Scanner scan = new Scanner(System.in); 
  double[] rainfall; 
  double totalRainfall = 0.0; 
  double max = 0, min  = 0;
  int year = 0;
  int maxQuarter = 1;
  int minQuarter = 1;

  System.out.println("Enter the number of years: ");
  year = scan.nextInt();
  rainfall = new double[year*4]

修改

public static void main(String[] args) 
{ 
   Scanner scan = new Scanner(System.in); 
   double[] rainfall; 
   int curyear = 0;
   double totalRainfall = 0.0; 
   double max = 0, min  = 0;
   int year = 0;
   int maxQuarter = 1;
   int minQuarter = 1;

   // Prompt user for the number of years
   System.out.println("Enter the number of years: ");
   year = scan.nextInt();
   rainfall = new double[year*4];
   for (int i=0; i < year*4 + 1; i++) 
   { 
       if((i % 4) == 0 && i != 0)
       {
            System.out.println();
            System.out.println("YEAR: " + ++curyear );
            System.out.println("Total rainfall = "+totalRainfall); 
            System.out.println("Average rainfall = "+(totalRainfall / 4.0)); 
            System.out.println("Max quarter rainfall = "+ max);
            System.out.println("Min quarter rainfall = " + min);
            System.out.println("Max quarter rainfall = "+ maxQuarter);
            System.out.println("Min quarter rainfall = " + minQuarter);
            System.out.println();
            if(i == (year*4))
                break;
       }

      System.out.print("Enter rainfall for quarter " + (i+1) + ": "); 
      rainfall[i] = scan.nextDouble(); 
      totalRainfall += rainfall[i]; 
      if (i == 0)
      {
         max = min = rainfall[i];
      }

      {
         if (rainfall[i] > max) {
            max = rainfall[i];
            maxQuarter = i + 1;
         }
         if (rainfall[i] < min) {
            min = rainfall[i];
            minQuarter = i + 1;
         }
      }


  }



}//end main 

答案 1 :(得分:0)

new double[4];  this is wrong.

如果您从用户那里得到尺寸,那么为什么要初始化?

在用户提供new double[year];

之类的尺寸后给出尺寸

答案 2 :(得分:0)

我注意到的第一件事就是

Int year = Scanner.nextInt();
Blahblahblah
year = Scanner.nextInt();

不要给年份一个价值。

Int year;
Year = scanner.nextInt();

至于其他人,我不知道我是否想帮助你。帮助你是不道德的,因为这是学习的重点。请注意,告诉教授您无法完成作业并且他将比互联网提供更好的帮助,这是完全可以的。

从iPad发送,请原谅拼写错误和大写错误