我怎麼能比我的字符串即word
我所有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
好吧,這看起來很有希望,我可能會放棄這一點。 – user1419012
這真的有助於感謝,我的程序也循環不正常。使用臨時數組是個好主意。乾杯。一個問題是。爲什麼wouldnt lowerCaseString.equalsToIgnoreCase()不起作用。 ?是因爲數組列表只是保存字符串的內存位置,而不是字符串本身。你不能讓一個存儲位置等於另一個? – user1419012
'「String」.toLowerCase()。equalsIgnoreCase(「stRiNg」)'工作並且是'true',當然,除非''StringX「'包含不存在於」「stRinNgY」中的字符或者字符序列不同。 –