下記のコードの再帰で値をセットするsetNodeで値を入れようとするとNullPointerExceptionが出ます。
空の変数に値をセットするメソッドでなぜ空参照のエラーが出るのでしょうか?
お分かりの方ご教授ください。
Java
1import java.util.Scanner; 2 3class Node{ 4 private int value; 5 private Node child[]; 6 7 public void setNode(int value, int digit, int start, int end) { 8 this.value = value; 9 if(digit == 0) { 10 return; 11 } 12 child = new Node[26]; 13 for(int i = 0; i < 26; i ++) { 14 child[i].setNode(i + 1, digit - 1, start, end); 15 } 16 } 17 18 public int getValue() { 19 return value; 20 } 21 22 public Node getChild(int index) { 23 return child[index]; 24 } 25} 26 27public class AlphaString { 28 private static int index1; 29 private static int index2; 30 31 public static void main(String[] args) { 32 Scanner abc = new Scanner(System.in); 33 34 System.out.println("アルファベットの小文字を1文字入力してください。"); 35 String str1 = abc.next(); 36 char c1 = str1.charAt(0); 37 38 System.out.println("アルファベットの小文字をもう1文字入力してください。"); 39 String str2 = abc.next(); 40 char c2 = str2.charAt(0); 41 42 //アルファベットをabc順に並べ替え 43 index1 = c1 - 'a'; 44 index2 = c2 - 'a'; 45 if(index1 > index2) { 46 int t = index1; 47 index1 = index2; 48 index2 = t; 49 } 50 51 //ノードをインスタンス化して値をセット 52 Node root = new Node(); 53 root.setNode(0, 3,index1, index2); 54 55 //printCharacterメソッドで出力 56 for(int i = index1; i <= index2; i++) { 57 printCharacter(root.getChild(i), 3, ""); 58 } 59 } 60 61 private static void printCharacter(Node n, int digit, String str) { 62 String alpha = "abcdefghijklmnopqrstuvwxyz"; 63 char c = alpha.charAt(n.getValue() - 1); 64 65 if(digit == 1) { 66 System.out.println(str + c); 67 return; 68 } 69 70 for(int i = index1; i <= index2; i++) { 71 printCharacter(n.getChild(i), digit - 1, str + c); 72 } 73 } 74} 75
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/20 16:45
2021/05/20 17:35
2021/05/21 00:30