簡體   English   中英

java中整數數組的問題

[英]Trouble with array of integers in 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 .:謝謝您注意到我的細心錯誤,現在可以使用了!

private ArrayList<Integer> monthList;

當前,您的列表為null(對象的默認值),當您執行monthList.add(); 意味着null.add()給您Null Pointer其更改為

private ArrayList<Integer> monthList=new ArrayList<Integer>();

初始化ArrayList:

ArrayList<Integer> monthList =new ArrayList<Integer>();

您的數組列表未初始化

private ArrayList<Integer> monthList;

應該更改為

private ArrayList<Integer> monthList = new ArrayList<>();

干得好

您沒有初始化ArrayList。 就這樣

public static void main(String[] args) {
    Seasons Precipitation = new Seasons();
    Precipitation.monthList = new ArrayList<Integer>();//INITIALISE
    Precipitation.In();
    Precipitation.Out(Precipitation.Calculate());
}

如果可行,請將其標記為接受。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM