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

そして、ここに2番目のクラスがあります:

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 であり、変更されることはありません。null 変数を使用して StringBuilder を作成しようとしています。

解決策:これをしないでください。

余談ですが、次回は、NPE をスローしている行をコメントで示してください。編集後もまだこれを行っていません。コードの各行を一度に 1 行ずつ数えることを強制しないでください。何かのようなもの:

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 に答える