我必须写一个方法来检查一个单词是否是回文。我可能有一种更简单的方法,但这只是基于我迄今所学到的东西。我的方法有效,除非大写字母与小写字母相比。
编辑:不是很清楚。我的方法返回大写和小写字母是相同的。但我想说它们是不同的
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 :(得分:3)
我建议使用稍微不同的方法,我会使用StringBuilder#reverse反转字符串,然后使用String#equalsIgnoreCase
比较两个字符串String s = kb.nextLine();
StringBuilder sb = new StringBuilder(s).reverse();
if (s.equalsIgnoreCase(sb.toString())) {
...
} else {
...
}
答案 1 :(得分:0)
您可以通过将输入字符串转换为大写字母来解决您的问题:
String s = kb.nextLine().toUpperCase();
或者,如果您希望保留原始String的大小写,请创建一个新的String并测试它是否为回文。
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;
}
}
答案 2 :(得分:0)
我认为你可以用它的ascii值来实现它
然后你将你的char转换为ascii
char character = 'a';
int ascii = (int) character;
然后比较整数