2013-05-07 3 views
-1

Так что я делаю Конвертер PigLatin, и у меня есть NullPointerException. Теперь вы можете спросить, пробовал ли я сам по себе, и я отвечаю за вас, да. В любом случае, вот мой код: линия вызвавшего ошибку закончится "ERROR"NULL Указатель исключений исключения

package project.pkg16.pkg9; 

public class Project169_Data { 

private static String[] words; 
private static String pigLatinWords; 

public static void setWords(String input) { 
    words = input.split(" "); 
} 

public static String convertToPigLatin() { 
    for (int i = 0; i < words.length; i++) { 
     String wordTemp = null; 
     String word = words[i].toString(); 
      char firstLetter = word.charAt(0); 
      StringBuilder sb = new StringBuilder(word.toString()); 
      sb.append(String.valueOf(firstLetter).toLowerCase()); 
      sb.deleteCharAt(0); 
      sb.append("ay "); 
      StringBuilder sb2 = new StringBuilder(wordTemp); LINE 24 ERROR 
      sb2.append(sb.toString()); 
      pigLatinWords = sb2.toString(); 
      } 
     return pigLatinWords; 
    } 
} 

А потом вот это второй класс:

package project.pkg16.pkg9; 

public class Project169_Main { 

public static Project169_Input project169_Input = new Project169_Input(); 
public static Project169_Data project169_Data = new Project169_Data(); 

public static void main(String[] args) { 
    String userInput = Project169_Input.getInput(); 

    project169_Data.setWords(userInput); 

    String pigLatinString = project169_Data.convertToPigLatin();  LINE 14 ERROR 

} 
} 

И, наконец, класс 3:

package project.pkg16.pkg9; 

import javax.swing.JFrame; 
import javax.swing.JOptionPane; 

public class Project169_Input { 

public static String getInput() { 

JFrame frame = new JFrame("English to Pig Latin"); 
String input = JOptionPane.showInputDialog(frame, "Enter the english words you wish to convert to Pig Latin."); 

return input; 
} //End of method... 
} //End of Class... 

Ошибка:

run:

Exception in thread "main" java.lang.NullPointerException 
at java.lang.StringBuilder.<init>(StringBuilder.java:92) 
at project.pkg16.pkg9.Project169_Data.convertToPigLatin(Project169_Data.java:24) 
at project.pkg16.pkg9.Project169_Main.main(Project169_Main.java:14) 
    BUILD SUCCESSFUL (total time: 31 seconds) 
+2

Чтобы решить NPE, вы всегда должны сначала взглянуть на строку, которая выбрасывает ее, так как она укажет, какая переменная имеет значение null. Итак, какая строка в вашем коде выше бросает NPE? –

+1

Серьезно, даже не сообщая нам, где происходит NPE? Удачи! – John3136

+0

Re: «Теперь вы можете спросить, не попробовал ли я сам по себе, и я отвечаю за вас, да, у меня есть»: я не думаю, что мы спросим, ​​* ли вы пытались, вопрос в том, что * ты пытался. И вообще, глупо говорить нам, что у вас есть исключение с нулевым указателем, но затем, чтобы дать нам абсолютно никакой информации об этом. – ruakh

ответ

5

wordTemp имеет значение null и не изменяется. Вы пытаетесь создать StringBuilder с нулевой переменной.

Решение: не делайте этого.

Как в сторону: в следующий раз, пожалуйста, укажите комментарий, какая линия бросает NPE. Вы еще не сделали этого еще даже после вашего редактирования. Пожалуйста, не заставляйте нас подсчитывать каждую строку вашего кода по одному. Что-то вроде:

StringBuilder sb2 = new StringBuilder(wordTemp); // **** this line throws NPE 
sb2.append(sb.toString()); 
pigLatinWords = sb2.toString(); 

Кроме того,

  • Вы хотите, чтобы исправить форматирование кода, особенно отступы, который в настоящее время неисправны, что делает его трудно для вас и нас для отладки.
  • Я думаю, что вы действительно хотите создать свой StringBuilder без параметров и до цикл for.
  • Я думаю, что вы хотите позвонить toString() на StringBuilder после цикл for.
Смежные вопросы