codeLab不接受降雨计划

时间:2016-02-01 20:46:29

标签: java

我正在处理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());
    }
}

任何帮助将不胜感激! 提前谢谢

2 个答案:

答案 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,代码实验室会接受它。