java.lang.NullPointerException无缘无故地出现

时间:2016-11-26 17:09:42

标签: java

我在其中创建了一个程序,有一个特定的方法可以确保数组中指向null的所有对象都指向一个空格。出于某种原因,每当我运行代码时,它都会给我一个java.lang.NullPointerException。

我理解NullPointerException是什么,这就是为什么我添加了if语句,以便它不会给出错误,但它仍然存在

代码:

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

        displaySize size = new displaySize(5,5);
        displaySize.output(5,3,size,"H");
        displaySize.run(size);
    }

}

class displaySize {
    public static int indent;
    public static int sizeX = 0;
    public static int sizeY = 0;

    public displaySize() {

    }

    public displaySize(int screenX, int screenY) {

        sizeX = screenX;
        sizeY = screenY;
        indent = sizeX;
    }

    public static void output(int x, int y, displaySize size, String print) {
        rarray(size)[x + y * size.sizeX] = print;

    }

    public static String[] rarray(displaySize size) {
        String [] display;
        return display = new String[sizeX * sizeY];
    }

    public static void run(displaySize size) {
        int next = 0;
        for (int i = 0; i < sizeY; i++) {
            for (int b = 0; b < indent; b++) {
                next++;
                if(rarray(size)[next].equals(null) )
                {
                    System.out.print( rarray(size)[next] + " ");
                    rarray(size)[next] = " ";
                }
                System.out.print( rarray(size)[next] + " ");

            }
System.out.println("/n");
        }

    }

}

1 个答案:

答案 0 :(得分:1)

第一个问题使用.equals(null)而不是== null

第二个问题,你的代码会抛出一个arrayoutofindex,因为你的下一个++是错误的for循环

最后你的新行字符错了\ n not / n 更正后的代码

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

        displaySize size = new displaySize(5,5);
        displaySize.output(5,3,size,"H");
        displaySize.run(size);
    }

}

class displaySize {
    public static int indent;
    public static int sizeX = 0;
    public static int sizeY = 0;

    public displaySize() {

    }

    public displaySize(int screenX, int screenY) {

        sizeX = screenX;
        sizeY = screenY;
        indent = sizeX;
    }

    public static void output(int x, int y, displaySize size, String print) {
        rarray(size)[x + y * size.sizeX] = print;

    }

    public static String[] rarray(displaySize size) {
        String [] display;
        return display = new String[sizeX * sizeY];
    }

    public static void run(displaySize size) {
        int next = 0;
        for (int i = 0; i < sizeY; i++) {
            next++;
            for (int b = 0; b < indent; b++) {



                if(rarray(size)[next]==(null) )
                {
                    rarray(size)[next] = " ";
                    System.out.print( rarray(size)[next] + " ");

                }
                System.out.print( rarray(size)[next] + " ");
                }


            System.out.println("\n");
        }
    }



}