2015-10-13 58 views
-2

我必須編寫一個方法來檢查單詞是否是迴文。我可能有一種更簡單的方法,但這只是基於我迄今爲止學到的。我的方法工作,除非有大寫字母與小寫字母比較。檢查charAt是否相同(區分大小寫)

編輯:不是很清楚。我的方法返回大寫和小寫字母是相同的。但我想可以說它們是不同的

public static void printPalindrome(Scanner kb) { 
System.out.print("Type one or more words: "); 
String s = kb.nextLine(); 
int count = 0; 
for(int i = 0; i < s.length();i++) { 
    char a = s.charAt(i); 
    char b = s.charAt(s.length()-(i+1)); 
    if (a==b) { 
     count ++; 
    } else { 
     count = count; 
    } 
} 
if (count == s.length()) { 
    System.out.print(s + " is a palindrome!"); 
} else { 
    System.out.print(s + " is not a palindrome."); 
} 
} 
+0

你爲什麼要遍歷整個字符串比較兩個字符串? '我'只需要跑到中心。 – Bathsheba

+0

我剛剛測試了你的代碼,它的工作方式就像你說的那樣。例如,「Noon」是**不是**迴文。 [看這個](https://ideone.com/qqtJON)如果你確實得到不同的結果,那麼也許'Scanner'正在做一些它不應該做的事情......我不知道那個,雖然 – musefan

回答

0

您可以通過將輸入的字符串爲大寫解決您的問題:

String s = kb.nextLine().toUpperCase(); 

或者,如果您希望保留原始字符串的情況下, ,創建一個新的字符串並測試它是否是迴文。

String s = kb.nextLine(); 
String u = s.toUpperCase(); 
int count = 0; 
for(int i = 0; i < u.length();i++) { 
    char a = u.charAt(i); 
    char b = u.charAt(u.length()-(i+1)); 
    if (a==b) { 
     count ++; 
    } else { 
     count = count; 
    } 
} 
0

我認爲其ASCII值

look this picture

那麼你建議立即進行刪除轉換您的字符以ASCII

char character = 'a'; 
int ascii = (int) character; 

然後比較整數

+0

你的答案如何解決大寫 - 小寫問題? – Psytho

3

我,你能做到這一點'd建議採用稍微不同的方法,我會扭轉字符串使用StringBuilder#reverse,然後使用String#equalsIgnoreCase

String s = kb.nextLine(); 
StringBuilder sb = new StringBuilder(s).reverse(); 

if (s.equalsIgnoreCase(sb.toString())) { 
... 
} else { 
... 
}