我是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)
关于如何确定哪一年的降雨量最多/最少,我也非常无能为力。
非常感谢您的帮助!非常感谢你。
答案 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发送,请原谅拼写错误和大写错误