我正在为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];
}
如果有人可以帮助我,我将非常感激。我真的不知道该如何解决。
答案 0 :(得分:0)
您正试图通过静态方法访问实例变量。您需要先声明实例变量rainfall
,然后才能使用它。另外,您在int
和min()
函数中缺少对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?上了解static
和instance
的含义。
快乐编码!