String ieword
をすべてのArrayList
要素と比較する方法 ...
scanWords
スキャナ オブジェクトを正しく 使用していないようです。
コードを使用して、最初wordsList
の要素がどの要素とも一致しない場合、どのscanWords
要素もwordsList
比較のために処理されません。リストの最初の単語と比較するためにscanWords
、次の呼び出しがhasNext()
常にfalse
.
以下は、要件に対する修正です。
while ( scanWords.hasNext() ) {
word= scanWords.next();
//for( int i = 0; i < wordList.size(); i++ ) {
for( String wordInList : wordList ) {
if( wordInList.equalsIgnoreCase( word ) ) {
contains = true;
} else {
System.out.println( word );
out.write( word );
}
} // for list
} // while scanner
解決策 2 :
以前にこの方法を試しましたが、問題は同じ単語を 6 回ループすることです。6 は私の配列リストのサイズです。
これは、リスト要素で明示的なループを行わない簡単な解決策です。
String listElements = wordList.toString().toLowerCase();
while ( scanWords.hasNext() ) {
word = scanWords.next();
if ( listElements.contains( word.toLowerCase() ) ) {
contains = true;
} else {
System.out.println( word );
out.write( word );
}
} // while scanner
サンプル実行:
List<String> ls = new ArrayList<String>( 4 );
ls.add( "raVi" );
ls.add( "sreekaR" );
ls.add( "lakShMi" );
ls.add( "sumAna" );
String listElements = ls.toString();
System.out.println( "listElements: " + listElements );
System.out.println( "listElements.toLowerCase(): " + listElements.toLowerCase() );
scanner = new Scanner( "Ravi Sumana Others sREEKar LAKshmi" );
while( scanner.hasNext() ) {
String w1 = scanner.next();
System.out.println( "'" + w1 + "' is in list ? = " + listElements.toLowerCase().contains( w1.toLowerCase() ) );
}
そして、実行結果は次のとおりです。
listElements: [raVi, sreekaR, lakShMi, sumAna]
listElements.toLowerCase(): [ravi, sreekar, lakshmi, sumana]
'Ravi' is in list ? = true
'Sumana' is in list ? = true
'Others' is in list ? = false
'sREEKar' is in list ? = true
'LAKshmi' is in list ? = true