我正在处理MyProrammingLab的作业: 编写一个具有以下字段的RainFall类:
•一系列双打,用于存储12个月中每个月的降雨量 年份(第一个指数与1月相对应,第二个指数与 二月等。)
该课程还应具备以下方法:
•返回全年总降雨量的方法 •一种返回当年月平均降雨量的方法 •将雨量最多的月份作为字符串返回的方法 •一种方法,以降雨量最少的月份作为字符串返回
在一个程序中展示该类,该程序需要用户12个双打(参加 按年份顺序翻倍,第一个对应于 1月降雨等)。输入验证:如果用户输入否定值 数字,忽略它并继续询问他们输入,直到你有12 非负双打。
一旦用户提供了所有12个双打,请创建RainFall的实例 上课并称其方法,打印出总降雨量,平均值 月降雨量,降雨量最多的月份和降雨量最少的月份 下雨,每个都在一条单独的线上。
这是我的程序,它可以正常使用netbeans但被codeLab拒绝:
import java.text.DateFormatSymbols;
import java.util.Scanner;
public class RainFall {
final private double[] rainFall;
public RainFall(double[] arr) {
rainFall = arr;
}
public double getTotalRain() {
double total = 0;
for(int i=0;i<rainFall.length;i++)
total = total + rainFall[i];
return total;
}
public double getAverageRain() {
double average = 0;
for(int i=0;i<rainFall.length;i++)
average = average + rainFall[i];
return average/rainFall.length;
}
public String getHighestRain() {
int j=0;
for(int i=0;i<12;i++)
if(rainFall[i]>rainFall[j])
j=i;
return new DateFormatSymbols().getMonths()[j];
}
public String getLowestRain() {
int j=1;
for(int i=0;i<12;i++)
if(rainFall[i]<rainFall[j])
j=i;
return new DateFormatSymbols().getMonths()[j];
}
public static void main(String[] args) {
Scanner myScan = new Scanner(System.in);
double[] rainfallInput = new double[12];
for(int i=1;i<=12;i++) {
System.out.print("Enter rainfall for month " + i + ":");
rainfallInput[i-1]=myScan.nextDouble();
myScan.nextLine();
if(rainfallInput[i-1]<0) {
System.out.print("Enter rainfall for month " + i + :");
rainfallInput[i-1]=myScan.nextDouble();
myScan.nextLine();
}
}
RainFall rain = new RainFall(rainfallInput);
System.out.println(rain.getTotalRain());
System.out.println(rain.getAverageRain());
System.out.println(rain.getHighestRain());
System.out.println(rain.getLowestRain());
}
}
任何帮助将不胜感激! 提前谢谢
答案 0 :(得分:1)
我假设您的答案被拒绝,因为您最终可以在第二个rainfallInput[i-1]=myScan.nextDouble();
输入一个负数
尝试使用do-while循环来连续询问正数。
public static void main(String[] args) {
Scanner myScan = new Scanner(System.in);
double[] rainfallInput = new double[12];
for (int i = 0; i < 12; i++) {
double input;
do {
System.out.print("Enter rainfall for month " + (i + 1) + ":");
input = myScan.nextDouble();
myScan.nextLine();
// Optionally tell why you are repeating input
/*
if (input <= 0) {
System.out.println("You must enter a positive value");
}
*/
} while (input <= 0);
rainfallInput[i] = input;
}
RainFall rain = new RainFall(rainfallInput);
System.out.println(rain.getTotalRain());
System.out.println(rain.getAverageRain());
System.out.println(rain.getHighestRain());
System.out.println(rain.getLowestRain());
}
public double getTotalRain() {
double total = 0;
for (int i = 0; i < rainFall.length; i++) {
total += rainFall[i];
}
return total;
}
public double getAverageRain() {
return getTotalRain() / (1.0 * rainFall.length);
}
public String getHighestRain() {
double max = Double.MIN_VALUE;
int maxIndex = 0;
for (int i = 0; i < rainFall.length; i++) {
double amount = rainFall[i];
if (amount > max) {
max = amount;
maxIndex = i;
}
}
return DateFormatSymbols.getInstance().getMonths()[maxIndex];
}
public String getLowestRain() {
double min = Double.MAX_VALUE;
int minIndex = 0;
for (int i = 0; i < rainFall.length; i++) {
double amount = rainFall[i];
if (amount < min) {
min = amount;
minIndex = i;
}
}
return DateFormatSymbols.getInstance().getMonths()[minIndex];
}
答案 1 :(得分:0)
摆脱myScan.nextLine();
循环中的for
,代码实验室会接受它。