これを説明するのを手伝ってください。私はあなたが代わりにあなたが行き続ける、ループを終了していない見つからない場合は、あなたの助けArrayList関連デバッグ質問
答えて
ラインとしてこれを取ると例外が発生する上:
while(!customer.get(temp_index).name.equals(dataset[a][CLIENT_NAME])){
問題を呼び出すことができ、物事の数があります。まず、customer
はnullでもかまいません。第2に、customer.get(temp_index)
の結果はnullとなる可能性があります。最後に、customer.get(temp_index).name
はnullでもかまいません。
ここでは完全なコードセットを扱っているわけではないので、上記の各項目に値をプリントアウトして、nullを解決するか、デバッガを使用することをお勧めします。例外の原因を正確に見ることができます。私の推測では、顧客の名前はnullに設定されて問題を引き起こす可能性がありますが、それは私が言及した他のもののいずれかと同じように簡単になる可能性があります。
いただきありがとうございます、これはnullポインタ例外
/* Try to find customer in customer list, if not in list add to list with a
new plan; otherwise add additional plan to customer*/
for(int a = 0; a < dataset.length; a++){
if(customer_name_list.contains(dataset[a][CLIENT_NAME])){
int temp_index = 0;
//NULLPOINTEREXCEPTION OCCURRED ON THE FOLLOWING LINE
while(!customer.get(temp_index).name.equals(dataset[a][CLIENT_NAME])){
temp_index++;
}
customer.get(temp_index).add_plan(dataset[a][PLAN], dataset[a][DETAIL]);
}
else{
Customer temp_customer = new Customer(dataset[a][CLIENT_NAME], dataset[a][PLAN], dataset[a][DETAIL]);
customer.add(temp_customer);
customer_name_list.add(dataset[a][CLIENT_NAME]);
}
}
を作る理由を見つけ出すように見えることはできません。カウンターや句を追加して、あなたが行き過ぎないようにしてください。
customer
コレクション、またはその要素の1つ、または要素の1つのname
フィールドがnullです。私は実際にはcustomer
コレクションに何が入っているかを見ることなく、何も言い表すことができません。
しかし、何らかの種類のログファイルでループ内にtemp_index
を印刷して、何回の繰り返しが完了するかを確認することをお勧めします。
便利な点は、特に、アクセスされているデータがほとんど分からない場合は、同じ行に複数の逆参照演算子(.
)が存在しないようにすることです。
private String getCustomerName(int index) {
Customer c = customer.get(index);
return c.name;
}
をそして、あなたのwhileループでそれを使用します。
は、次の例のヘルパーメソッドを作成することができます。
関連するものはありませんが、他にも指摘されているように、一致する要素が見つからない場合、ループはIndexOutOfBoundsException
で終了するため、修正する必要があります。
for (dataA : dataset) {
if (customer_name_list.contains(dataA[CLIENT_NAME])) {
for (c : customer) if (dataA[CLIENT_NAME].equals(c.name)) {
c.add_plan(dataA[PLAN], dataA[DETAIL]);
break;
}
} else {
customer.add(new Customer(dataA[CLIENT_NAME], dataA[PLAN], dataA[DETAIL]));
customer_name_list.add(dataA[CLIENT_NAME]);
}
}
これはあなたがやっていることで、クリーナーだけです。ルックアップと検索呼び出しを改善するために、ハッシングデータ構造(たとえば、HashMap
)またはソートされたデータ構造に切り替えることをお勧めします。そして、上記のは、脳に容易になるように加えて、よりよい性能面で、
for (data : dataset) {
if ((Customer c = customer_map.get(data[CLIENT_NAME]))!=null) {
c.add_plan(data[PLAN], data[DETAIL]);
} else {
customer_map.put(data[CLIENT_NAME], new Customer(data[CLIENT_NAME], data[PLAN], data[DETAIL]));
}
}
ようになります。インサートオーダーベースの繰り返しのような他のものが必要な場合は、適切なマップフレーバーを使用できます。 temp_indexの項目はnull
ある(とname
を得ることはNPEがスローされます)のいずれか、またはname
はnull
、その上にequals
を呼び出そうとしている - あなたが取り出されてきた項目が正しく初期化されていないことを意味
、 NPEを投げるインデックスが存在しない場合は、範囲外スタイルの例外が発生します。
- 1. WPF関連ソースバインディングの質問
- 2. Guice:スコープ関連の質問
- 3. WCFメッセージセキュリティ関連の質問
- 4. webcam関連の質問
- 5. スカラのカリング関数関連の質問
- 6. cocos2dデバッグの質問
- 7. javaペアとArrayListの質問
- 8. あなたのウェブサイトに関連するFacebook関連の質問
- 9. 乱数生成器関連の質問
- 10. データベースと関連する質問
- 11. SQL結合関連の質問
- 12. .rodata再配置関連の質問
- 13. djangoに関連する質問
- 14. インストールこの質問に関連し
- 15. Struts 2 - XSS関連の質問
- 16. グラフィック関連の質問:メッシュとジオメトリ
- 17. MongoDB Update/Upsert質問 - スキーマ関連
- 18. Stack Overflow関連する質問
- 19. iPhone app AppStoreに関連する質問
- 20. XMLタグに関連する質問
- 21. コピーコンストラクタ関連の質問(ネイティブC++)
- 22. Ruby on Railsデバッグ質問
- 23. この質問は私の他の質問に関連している
- 24. バッチ:この質問はこの質問に関連しているファイルパス
- 25. Railsでの適切な関連付けに関する質問
- 26. c#単純なデバッグの質問
- 27. デバッグの質問 - VS 2008 WebサービスのCassini
- 28. C#でMSIをチェーンして、この質問が関連する
- 29. 連絡先フォームのランダム確認に関する質問
- 30. 連鎖したXSLTの変数参照に関する質問
リストではなくマップを使用する必要があるようです。 – rfeak
スタックトレースも投稿できますか? – CoolBeans
見つかりクライアント:QBEホールディングス wisconsinrx.mainuserinterface.populate_helperでwisconsinrx.mainuserinterface.v_button_opendataActionPerformedで(mainuserinterface.java:498) (mainuserinterface.java:546) でwisconsinrx.mainuserinterface.access $ 000(mainuserinterface.java:32 )wisconsinrx.mainuserinterface $ 1.actionPerformedで (mainuserinterface.java:172)javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995で )javax.swing.AbstractButton $ Handler.actionPerformedで (AbstractButton.java:2318) – Scicare