该程序应该允许用户输入每个月的退出值,然后输出退出和最干燥季节的平均值。它正在编译,但问题是我无法将数据输入到数组中。它让我进入第一个数组元素的值,然后告诉我有一个错误:java中整数数组的问题
Enter precipitation for each month:
Month #01 = 10
Exception in thread "main" java.lang.NullPointerException
at Seasons.In(Seasons.java:16)
at Seasons.main(Seasons.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Process finished with exit code 1
下面是代码:
import java.util.Scanner;
import java.util.ArrayList;
public class Seasons {
private ArrayList<Integer> monthList;
private int winter,spring,summer,autumn;
public void In(){
Scanner in = new Scanner(System.in);
System.out.println("Enter precipitation for each month: ");
for(int i=0;i<12;i++){
System.out.print("Month #"+i+1+" = ");
int a=in.nextInt();
monthList.add(i, a);
}
}
public int Calculate(){
int Sum = 0;
for(int element:monthList){
Sum+=element;
}
winter = monthList.get(11) + monthList.get(0) + monthList.get(1);
spring = monthList.get(2) + monthList.get(3) + monthList.get(4);
summer = monthList.get(5) + monthList.get(6)+ monthList.get(7);
autumn = monthList.get(8) + monthList.get(9) + monthList.get(10);
return Sum;
}
public void Out(int Result){
System.out.println("Average precipitation for this year is "+ Result/12);
if(winter<spring && winter<summer && winter<autumn) System.out.println("Winter was the driest season - "+winter);
else if(spring<summer && spring<autumn) System.out.println("Spring was the driest season - "+spring);
else if(autumn<summer) System.out.println("Autumn was the driest season - "+autumn);
else System.out.println("Summer was the driest season - "+summer);
}
public static void main(String[] args){
Seasons Precipitation = new Seasons();
Precipitation.In();
Precipitation.Out(Precipitation.Calculate());
}
}
应该心存感激的任何帮助。
UPD:感谢您注意到我的无心的错误,现在它的工作原理!
哪一行是16行?它是'System.out.print(“Month#”+ i + 1 +“=”);'? – bpgeck
除了你面临的问题,你的命名约定需要看[链接](http://www.oracle.com/technetwork/java/codeconventions-135099.html) –
可能重复[什么是空指针异常,以及如何解决它?](http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it) –