Iteratorディケンサによるjava.util.NoSuchElement Exceptionの原因と解決方法
2411 ワード
私:今日はローズマリーを使ってjava.util.NoSuchElement Exceptionエラーが発生しました.解決策を探しました.やはり、シーズマリーnext()については深く理解していません.以下:
本文はオリジナルを尊重します
http://blog.csdn.net/a503921892/article/details/23061341
簡単に言います
原因:サイクル中に二回のnext()の方法を使うことができません.
解決方法:next()を取り出したデータをまず新しい対象に転送し、使う時に方法を考えて取り出します.
私たちはJDK文書でIteratorの3つの方法を見ることができます.Java.util.NoSuchElement Exceptionはnext()によるものです.下の赤い字を見なさい
方法の概要
next
戻り値:
次の要素を繰り返します.
投げ出す:
異常コードは以下の通りです.
[java] view plin
copy
//ハイshMapをローズマリーで遍歴し、条件に合致した場合は値を返します.常識:ローズマリーの初期位置はリストの最初のデータの上にあります.最初のデータを指すのではありません.ポイントはnext()の方法は循環の中で2回呼び出すことができなくて、さもなくばjava.util.NoSuchElement Exceptionを申し込むことができます. bollan isOk = false; Iterator> iter = map.entrySet().iterator() while(iter.has Next){ //hash Next() 「white-space:pre」> if(name.equals(iter.next().getKey()){/next()一回 System.out.println(「名前:」 + iter.next().getKey()//二回 System.out.println(「電話:」 + iter.next().getValue()//三回 isOk = true; break; } ) if(isOk) { //nothing } else{ System.out.println(「この人がいないと調べる!」) } 改善後のコードは以下の通りです.
[java] view plin
copy
bollan isOk = false; Iterator> iter = map.entrySet().iterator() while(iter.has Next){ 「white-space:pre」> Map.Entry index = iter.next();"font-family: Arial Helvetica、 sans-serif;'//next() 今回だけは、新しいオブジェクトを作成し、next()を取り出した値を伝えます. String outname = index.getKey()///再取出値 String outnumber = index.getValue()、「font-family: Arial Helvetica、 sans-serif;"////"は値を取り出します. if(name.equals){//ここもnext()の方法はいらないです. System.out.println(「名前:」 + outname; System.out.println(「電話:」 + outnumber) isOk = true; break; } ) 「white-space:pre」> if(isOk) { //nothing } 「white-space:pre」> else{ 「white-space:pre」> System.out.println(「この人がいないと調べる!」) }
本文はオリジナルを尊重します
http://blog.csdn.net/a503921892/article/details/23061341
簡単に言います
原因:サイクル中に二回のnext()の方法を使うことができません.
解決方法:next()を取り出したデータをまず新しい対象に転送し、使う時に方法を考えて取り出します.
私たちはJDK文書でIteratorの3つの方法を見ることができます.Java.util.NoSuchElement Exceptionはnext()によるものです.下の赤い字を見なさい
方法の概要
boolean
hasNext()
は、要素が反復可能である場合には、戻ります. trueE
next()
は、反復の次の要素を返します.void
remove()
は、サンデーが指すcollectionから、サンデーが返した最後の要素を除去する(オプション動作).next
E next()
反復の次の要素を返します.戻り値:
次の要素を繰り返します.
投げ出す:
NoSuchElementException
- 反復できる要素はありません. ←ここです異常コードは以下の通りです.
[java] view plin
copy
//ハイshMapをローズマリーで遍歴し、条件に合致した場合は値を返します.常識:ローズマリーの初期位置はリストの最初のデータの上にあります.最初のデータを指すのではありません.ポイントはnext()の方法は循環の中で2回呼び出すことができなくて、さもなくばjava.util.NoSuchElement Exceptionを申し込むことができます. bollan isOk = false; Iterator> iter = map.entrySet().iterator() while(iter.has Next){ //hash Next() 「white-space:pre」> if(name.equals(iter.next().getKey()){/next()一回 System.out.println(「名前:」 + iter.next().getKey()//二回 System.out.println(「電話:」 + iter.next().getValue()//三回 isOk = true; break; } ) if(isOk) { //nothing } else{ System.out.println(「この人がいないと調べる!」) } 改善後のコードは以下の通りです.
[java] view plin
copy
bollan isOk = false; Iterator> iter = map.entrySet().iterator() while(iter.has Next){ 「white-space:pre」> Map.Entry index = iter.next();"font-family: Arial Helvetica、 sans-serif;'//next() 今回だけは、新しいオブジェクトを作成し、next()を取り出した値を伝えます. String outname = index.getKey()///再取出値 String outnumber = index.getValue()、「font-family: Arial Helvetica、 sans-serif;"////"は値を取り出します. if(name.equals){//ここもnext()の方法はいらないです. System.out.println(「名前:」 + outname; System.out.println(「電話:」 + outnumber) isOk = true; break; } ) 「white-space:pre」> if(isOk) { //nothing } 「white-space:pre」> else{ 「white-space:pre」> System.out.println(「この人がいないと調べる!」) }