数组和类的Null指针异常-Java



好的,所以我有一个全局数组作为类"Temp"的一部分。我想从程序中的任何位置编辑该数组。这很好。然而,当我尝试使用这些值来设置"Cords"类中的值时,我会得到一个Null异常错误。我已在代码中对此进行了注释。知道为什么吗?

import java.util.Scanner;

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

        Scanner inp = new Scanner(System.in);
        int n = 0;
        for(int k = 0; k<4; k++){
            Temp.tempValues[k] = 0;
        }
        boolean checkNums = false;
        String coords = "";

        while(n<1 || n>2000){
            System.out.println("Enter number of lines");
            n = inp.nextInt();

        }
        Cords[] lines = new Cords[n];
        int proceed = 0;
        inp.nextLine();
        for(int i = 0; i<n; i++){
            proceed = 0;
            checkNums = false;
            while((proceed != 3) || (checkNums == false)){
                System.out.println("Enter line coordinates. "+(i+1));
                coords = inp.nextLine();
                proceed = checkSpaces(coords);
                checkNums = rightNums(coords);
            }
            lines[i] = new Cords();
            lines[i].setValues(Temp.tempValues[0], Temp.tempValues[1], Temp.tempValues[2], Temp.tempValues[3]);

        }
    }
    public static int checkSpaces(String sent){
        int spaces = 0;
        for(int y = 0; y< sent.length(); y++){
            if(sent.charAt(y)==' '){
                spaces++;
            }
        }
        return spaces;
    }
    public static boolean rightNums(String sent){

        int z = 0;
        int l = 0;
        String num = "";
        while(z<sent.length()){
                while((z<sent.length())&&(sent.charAt(z) != ' ')){
                    num += sent.charAt(z);
                    z++;
                }
                if(Integer.parseInt(num) < 0 || Integer.parseInt(num) >=10000){
                    return false;
                }else{
                    Temp.tempValues[l] = Integer.parseInt(num);
                    num = "";
                    z++;
                    l++;
                }
            }
        return true;
    }
    public class Cords{
        int x1 = 0;
        int x2 = 0;
        int y1 = 0;
        int y2 = 0;
        public void setValues(int xx1, int yy1, int xx2, int yy2){
            x1 = xx1;
            y1 = yy1;
            x2 = xx2;
            y2 = yy2;
        }
}
    public static class Temp{
        static int[] tempValues = new int[4];
    }
}

您的lines数组不包含任何对象。它只包含null,并且不能调用null值上的方法。

由于您正在对lines数组进行迭代,因此在调用其上的方法之前,请初始化当前元素:

for (int i = 0; i < lines.length; i++) {
    lines[i] = new Cords();
    lines[i].setValues(...);
}

您还必须使Cords类成为静态的。

public static void main(String[] args){
    Cords[] lines = new Cords[5];
    for(int k = 0; k<4; k++){
        Temp.tempValues[k] = 0;
    }
    for(int i = 0; i < lines.length; i++){
        lines[i] = new Cords();
    lines[i].setValues(Temp.tempValues[0], Temp.tempValues[1], Temp.tempValues[2], Temp.tempValues[3]);
    }
}

相关内容

  • 没有找到相关文章

最新更新