2017-10-02 9 views
-3

La résolution d'un problème de code à barres de "palindrome valide" ci-dessous est le code. quand je convertis le stringbuffer en string et en minuscule, la chaîne est imprimée en minuscules, mais quand j'y accède pour des comparaisons avec s.charAt (i), je reçois aussi les majuscules.Les caractères ne sont pas convertis en minuscules, bien que la chaîne ait toutes les lettres minuscules

public static void main(String []args){ 

    String s = "aA"; 

    String[] strings = s.split("[^A-Za-z0-9]"); 
    StringBuffer sb = new StringBuffer(); 

    for(int i =0; i<strings.length;i++){ 
     sb.append(strings[i]); 
    } 
    String newString = sb.toString().toLowerCase(); 
    System.out.println("New String "+newString);***// output : aa(lower case)*** 

    for(int i =0; i<newString.length()/2;i++){ 
     if(s.charAt(i) != s.charAt(newString.length()-i-1)){ 
      System.out.println(s.charAt(i));//**output 'a** 
      System.out.println(s.charAt(newString.length()-i-1));//***output 'A'*** 
     } 

    } 

Quelqu'un peut-il expliquer pourquoi?

+4

Pourquoi pas? 's' est toujours' "aA" 'dans ce code. –

Répondre

0

Si vous souhaitez obtenir des minuscules, utilisez la variable newString au lieu de la chaîne s;

for(int i =0; i<newString.length()/2;i++){ 
    if(newString.charAt(i) != newString.charAt(newString.length()-i-1)){ 
     System.out.println(newString.charAt(i)); 
     System.out.println(newString.charAt(newString.length()-i-1)); 
    } 

}

Si vous prévoyez de vérifier le palindrome ou pas alors ce qui suit peut être une solution.

String s = "aA"; 

    StringBuffer stringBuffer = new StringBuffer(s); 
    String reverse = stringBuffer.reverse().toString().toLowerCase(); 

    if (reverse.equals(s.toLowerCase())) { 
     System.out.println("Palindrome"); 
    } else { 
     System.out.println("Not palindrome"); 
    } 
1

Vous n'êtes pas en train de modifier s, la chaîne minuscule est en newString. Vous devez remplacer la variable à l'intérieur de la seconde pour:

for(int i =0; i<newString.length()/2;i++){ 
     if(newString.charAt(i) != newString.charAt(newString.length()-i-1)){ 
      System.out.println(s.charAt(i));//**output 'a** 
      System.out.println(s.charAt(newString.length()-i-1));//***output 'A'*** 
     } 
    }