Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java codeLab中不接受降雨计划_Java - Fatal编程技术网

Java codeLab中不接受降雨计划

Java codeLab中不接受降雨计划,java,Java,我正在完成MyProProgrammingLab的一项任务: 编写具有以下字段的雨量类: •存储12个月内每个月降雨量的双倍阵列 年份(第一个指数对应于1月,第二个指数对应于 二月等) 该类还应具有以下方法: •返回全年总降雨量的方法 •返回当年月平均降雨量的方法 •以字符串形式返回降雨量最多的月份的方法 •将降雨量最少的月份作为字符串返回的方法 在一个程序中演示该类,该程序从用户处获取12个双倍(取 按一年中的月份顺序加倍,第一个对应于 一月份的降雨量等)。执行输入验证:如果用户输入负数 数字

我正在完成MyProProgrammingLab的一项任务: 编写具有以下字段的雨量类:

•存储12个月内每个月降雨量的双倍阵列 年份(第一个指数对应于1月,第二个指数对应于 二月等)

该类还应具有以下方法:

•返回全年总降雨量的方法 •返回当年月平均降雨量的方法 •以字符串形式返回降雨量最多的月份的方法 •将降雨量最少的月份作为字符串返回的方法

在一个程序中演示该类,该程序从用户处获取12个双倍(取 按一年中的月份顺序加倍,第一个对应于 一月份的降雨量等)。执行输入验证:如果用户输入负数 数字,忽略它,并继续要求他们输入,直到你有12个 非负双打

一旦用户为您提供了所有12个双倍,创建一个降雨实例 类并调用其方法,打印出总降雨量、平均降雨量 月降雨量、降雨量最多的月份和降雨量最少的月份 雨,每一个都在一条单独的线上

这是我的程序,它在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());
    }
}
导入java.text.DateFormatSymbols;
导入java.util.Scanner;
公共级降雨{
最终降雨量;
公众降雨量(双[]arr){
降雨量=arr;
}    
公共双getTotalRain(){
双倍合计=0;

对于(int i=0;i我假设您的答案被拒绝,因为您最终可以在第二次
RainalInput[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];
} 
publicstaticvoidmain(字符串[]args){
Scanner myScan=新扫描仪(System.in);
double[]rainfallInput=新的double[12];
对于(int i=0;i<12;i++){
双输入;
做{
系统输出打印(“输入月份降雨量”+(i+1)+“:”;
input=myScan.nextDouble();
myScan.nextLine();
//有选择地告诉您重复输入的原因
/*

如果(输入在
for
循环中去掉
myScan.nextLine();
,代码实验室将接受它。

添加拒绝原因的具体细节?“如果用户输入负数,忽略它并继续要求他们输入,直到”-您只需重复提示一次,而不是无限期地重复,直到输入一个正值。我猜您是对的!但它仍然被拒绝,我得到的唯一解释是:逻辑错误.Hmm.可能是您的一个最小/最大函数出错了。我更新了其余的函数。真的感谢您的快速帮助!我尝试过,但仍然没有任何结果,但现在我得到的输出应该是:输入·降雨·月份·1:输入·降雨·月份·2:输入·降雨·月份·3:输入·降雨·月份·4:输入·降雨·月份·mo第n·5:输入·降雨·月份·6:输入·降雨·月份·7:输入·降雨·月份·8:输入·降雨·月份·9:输入·降雨·月份·10:输入·降雨·月份·11:输入·降雨·月份·12:41.88↵ 3.49↵ 七月↵ 四月↵