不了解符号错误-首次使用数组

时间:2018-07-27 17:22:34

标签: java arrays

我正在为Java类编写程序。这些说明对我来说似乎很简单,但是我将它们粘贴在下面,以防有人对它们的解释不同。

编写一个包含以下字段的RainFall类:

•一系列的double值,用于存储12个月中每个月份的降雨量 年份(第一个索引对应一月,第二个索引对应 二月等)

该类还应具有以下方法:

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

在一个程序中演示该类,该程序需要用户进行12次加倍操作(以 按一年中的月份顺序翻倍,第一个对应于 一月的降雨等)。输入验证:如果用户输入否定的 数字,忽略它并继续要求他们输入,直到您有12 非负双打。

一旦用户给了您全部12次双打,请创建RainFall的实例 类并调用其方法,打印出总降雨量,平均值 每月降雨量,降雨量最多的月份和最少的月份 下雨了,每条线都分开。

我们从头开始有了一些代码,除了方法外,它似乎无所不包。这是给我们的。

import java.util.Scanner;

public class RainFall {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        double[] rainfall = new double[12];
        int i = 0;
        System.out.print("Enter rainfall for month 1:");

        while(i < 12){
            double rain = scanner.nextDouble();
            if(rain >= 0){
                rainfall[i] = rain;
                i++;
            }
            if(i!=12){
                System.out.print("Enter rainfall for month " + (i+1) + ":");
            }
        }

        RainFall rf = new RainFall(rainfall);
        System.out.println(rf.total());
        System.out.println(rf.average());
        System.out.println(rf.most());
        System.out.println(rf.least());

    }
    //add code here
}

所以我把它放在应该添加代码的区域。

public RainFall(double[] a) {
        rainfall = a;
}

public static double total() {
    double t = 0.0;
    for(int i = 0; i < rainfall.length; i++) {
        t += rainfall[i];
    }
    return t;
}
public static double average() {
    double v = 0.0;
    double t = 0.0;
    for(int i = 0; i < rainfall.length; i++) {
        t += rainfall[i];
    }
    v = t/rainfall.length;
    return v;
}
public static String most() {
    String months[]={"January", "February", "March", "April", "May", "June", "July", "August", "September",
                    "October", "November", "December"};
    int j = 0;
    int max = rainfall[0];
    for(int i = 1; i < rainfall.length; i++) {
        if(rainfall[i] > max) {
            max = rainfall[i];
            j = i;
        }
    }
    return months[j];
}
public static String least() {
    String months[]={"January", "February", "March", "April", "May", "June", "July", "August", "September",
                    "October", "November", "December"};
    int j = 0;
    int min = rainfall[0];
    for(int i = 1; i < rainfall.length; i++) {
        if(rainfall[i] < min) {
            min = rainfall[i];
            j = i;
        }
    }
    return months[j];
}

如果有人可以帮助我,我将非常感激。我真的不知道该如何解决。

1 个答案:

答案 0 :(得分:0)

您正试图通过静态方法访问实例变量。您需要先声明实例变量rainfall,然后才能使用它。另外,您在intmin()函数中缺少对max()的强制转换。

尝试更改添加到此代码:

public class RainFall {

    public double[] rainfall;


    public RainFall(double[] a) {
        this.rainfall = a;
    }

    public double total() {
        double t = 0.0;
        for(int i = 0; i < rainfall.length; i++) {
            t += rainfall[i];
        }
        return t;
    }
    public double average() {
        double v = 0.0;
        double t = 0.0;
        for(int i = 0; i < rainfall.length; i++) {
            t += rainfall[i];
        }
        v = t/rainfall.length;
        return v;
    }
    public String most() {
        String months[]={"January", "February", "March", "April", "May", "June", "July", "August", "September",
                        "October", "November", "December"};
        int j = 0;
        int max = (int) rainfall[0];
        for(int i = 1; i < rainfall.length; i++) {
            if(rainfall[i] > max) {
                max = (int) rainfall[i];
                j = i;
            }
        }
        return months[j];
    }
    public String least() {
        String months[]={"January", "February", "March", "April", "May", "June", "July", "August", "September",
                        "October", "November", "December"};
        int j = 0;
        int min = (int) rainfall[0];
        for(int i = 1; i < rainfall.length; i++) {
            if(rainfall[i] < min) {
                min = (int) rainfall[i];
                j = i;
            }
        }
        return months[j];
    }
}

还可以在此Stack Exchange帖子What are the differences between class variables and instance variables in Java?上了解staticinstance的含义。

快乐编码!