0

を実行しようとしています。メイン プログラムでBinary Search Treeのタイプのオブジェクトを作成Employeeしていますが、問題はないようですが、 で項目を検索しようとするBSTと、プログラムが終了します。

 System.out.println("Searching the Binary Search Tree");
                        System.out.println("Enter surname to search for:");
                        String choice2 = sc.nextLine(); 
                        BinaryNode a = temp.search(choice2);
                        Employee newEmp = (Employee) a.obj;
                        if (a == null)
                            {
                                System.out.println("Not Found");
                            }
                        else
                            {
                                System.out.println(newEmp.getData());
                            }
                       break;
                    }

プログラムが終了すると、次の行を指します

Employee newEmp = (Employee) a.obj;

与えられたエラーは、java.lang.NullPointerException: null

なぜこれが起こっているのか誰か教えてください。

4

3 に答える 3

2

null オブジェクトの .obj にはアクセスできません。a==null かどうかを確認した後、行を移動する必要があります。

 System.out.println("Searching the Binary Search Tree");
                    System.out.println("Enter surname to search for:");
                    String choice2 = sc.nextLine(); 
                    BinaryNode a = temp.search(choice2);
                    if (a == null)
                        {
                            System.out.println("Not Found");
                        }
                    else
                        {
                            Employee newEmp = (Employee) a.obj;
                            System.out.println(newEmp.getData());
                        }
                   break;
                }
于 2013-01-16T08:22:14.817 に答える
0

temp.search(choice2) が null 以外の値を返すかどうかを確認できますか? null 参照を使用してキャストすると、このようなエラーが発生します

それに加えて、BinaryNode a に対して実行しているキャストが実際に Employee であることを確認してください。(ただし、これは NullPointerException とは関係ありません)

于 2013-01-16T08:22:34.747 に答える
0

メソッドsearchは を返す可能性があるため、コードを再編成し、条件の一部に行をnull追加する必要があります。Employee newEmp = (Employee) a.obj;else

于 2013-01-16T08:26:07.193 に答える