2014-10-02 90 views
1

所以我的程序确定用户输入是否是回文。但是,如果输入包含大小写混合,那么最终输出将全部为小写。我如何制作它以便输出原始用户输入。在Java中打印原始字符串

当前:用户输入= 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; 
     } 
    } 
} 

回答

3

如果你想让它返回原来的字符串,只是保存原始字符串的副本。如果副本是回文,只需返回原始字符串,而不是复制的字符串。

0

s = s.toLowerCase();此代码是改变你的Aaaa

2

请勿在输入字符串上使用toLowerCase。相反,推迟你的情况下转换到你做的比较点,即改变

if(string[c] != string [length - c - 1]){ 

if(Character.toLowerCase(string[c]) != Character.toLowerCase(string [length - c - 1])){ 

这样,你仍然会得到你想要的比较,而无需修改输入。