所以我的程序确定用户输入是否是回文。但是,如果输入包含大写和小写的混合,那么最终输出将全部为小写。如何进行输出以输出原始用户输入。
当前:用户输入= Aa。输出= aa是回文。
目标:用户输入= Aa。输出= Aa是回文。
import java.util.*;
public class Colonies {
static char [] string;
static int length;
private static Scanner scan;
public static void main (String[] args){
scan = new Scanner(System.in);
System.out.println("Please enter a string of characters.");
String s = scan.nextLine();
s = s.toLowerCase();
string = s.toCharArray();
length = string.length;
if (isPalindrome()){
System.out.println(s+" is a palindrome.");
}
else {
System.out.println(s+" is not a palindrome.");
}
}
public static boolean isPalindrome(){
boolean palindrome = true;
for (int c = 0; c < length/2; c++){
if(string[c] != string [length - c - 1]){
palindrome = false;
}
}
if (palindrome){
return true;
} else {
return false;
}
}
}
答案 0 :(得分:3)
如果要使其返回原始字符串,只需保存原始字符串的副本即可。如果副本是回文,只需返回原始字符串,而不是复制的字符串。
答案 1 :(得分:2)
不要在输入字符串上使用toLowerCase
。相反,将您的案例转换推迟到您进行比较的点,即更改
if(string[c] != string [length - c - 1]){
到
if(Character.toLowerCase(string[c]) != Character.toLowerCase(string [length - c - 1])){
通过这种方式,您仍然可以获得所需的比较,而无需修改输入。
答案 2 :(得分:0)
s = s.toLowerCase();
此代码正在将您的Aa
更改为aa