-1

所以我正在制作一个PigLatin 转换器,我有一些NullPointerException. 现在你可能会问我是否尝试过自己修复它,我对你的回答是肯定的。无论如何,这是我的代码:导致错误的行将以“错误”结尾

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...

错误是:

跑:

    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)
4

1 回答 1

5

wordTemp 为空且从未更改。您正在尝试使用 null 变量创建 StringBuilder。

解决方案:不要这样做。

顺便说一句:下一次,请通过评论指出哪一行正在抛出 NPE。即使在您的编辑之后,您没有这样做。请不要强迫我们一次计算每一行代码。就像是:

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

还,

  • 您需要修复您的代码格式,尤其是当前有缺陷的缩进,使您和我们难以调试。
  • 我认为您真的想在 for 循环之前创建没有参数的 StringBuilder 。
  • 我认为您想在 for 循环之后toString()调用StringBuilder 。
于 2013-05-07T23:43:48.083 回答