private static int getTotalWordValue(String word) {
int totalWordValue = 0;
// Code that produces correct results.
for(int i=0; i < alpha.length(); i++) {
char letter = alpha.charAt(i);
for(char ch: word.toCharArray()) {
if(letter == ch) {
totalWordValue += i+1;
}
}
}
// Code that produces incorrect results.
totalWordValue = 0;
for(int i=0; i < alpha.length(); i++) {
String letter = String.valueOf(alpha.charAt(i)); // <-- here?
if(word.indexOf(letter) != -1) {
totalWordValue += i+1;
}
}
return totalWordValue;
}
運行上述代碼解決Project Euler Problem 42,我得到不同的結果。上面顯示的第一個'for'循環輸出正確的結果,第二個'for'循環輸出不正確的結果。搜索char []中的char與使用String.indexOf()方法搜索String有什麼區別?
上面的代碼需要一個字符串並返回其字值。例如,該字SKY將返回的55字的值作爲在該單詞中的字母添加如下(從1開始):
- S = 19(字母表中的19位)
- K = 11 (字母表的第11位)
- Y = 25(字母表的第25位)。
19 + 11 + 25 = 55。
我降低了問題上述代碼和不明白爲什麼發生這種情況。也許我錯過了與Java String類及其方法相關的重要信息。
我在Windows 10上運行的Java 8在Eclipse Neon.3版本(4.6.3)
不確定你的問題到底是什麼。你能僅發佈特定的代碼嗎? – Ravi
使用第一個代碼塊和第二個代碼塊有什麼區別?對我而言,他們應該基本上產生相同的總詞語價值。但是當在單詞列表上運行時,它們不會達到相同的結果。 – Kwistech