我如何将我的 String ieword
与我的所有ArrayList
元素进行比较...
看来,您scanWords
错误地使用了扫描仪对象。
使用您的代码,如果您的第一个元素wordsList
与任何元素都不匹配scanWords
,则不会处理任何元素以wordsList
进行比较。为什么是因为,为了与列表中的第一个单词进行比较,您已经迭代到最后scanWords
导致下一次调用hasNext()
始终返回 a 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