2016-11-26 5 views
-1

Я создал программу, внутри которой существует специальный метод, который гарантирует, что все объекты в массиве, указывающие на нуль, указывают на пустое пространство. По какой-то причине, когда я запускаю код, он дает мне java.lang.NullPointerException.java.lang.NullPointerException появляется без причины

Я понимаю, что такое NullPointerException есть, поэтому я добавил, если заявление, так что он не будет давать ошибку, но она по-прежнему делает

Код:

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"); 
     } 

    } 

} 
+0

Всегда есть причина. Вы искали в NullPointerException? –

+0

Никогда не выполняйте нулевую проверку следующим образом: 'rarray (size) [next] .equals (null)'. Всегда используйте '=='. Вероятно, это вызывает проблемы. например do 'if (rarray (size) [next] == ​​null) {' –

+0

@DontKnowMuchButGettingBetter Я знаю, что исключение нулевого указателя - это когда объект, который используется (например, напечатан на экране, добавлен в другой объект obeject и т. д.), указывает null, и поэтому не может быть использован –

ответ

1

первой проблемы используется .equals (NULL) вместо == NULL

вторая проблема код кидает arrayoutofindex, потому что ваш следующий ++ был неправ цикл

плавника ваш новый символ линии был неправильным его \ 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"); 
     } 
    } 



} 
+0

Спасибо за помощь. следующий ++ исправил это. но я уже установил файлы \ n и == –

Смежные вопросы