2016-06-21 5 views
-3

Ist dieser Code korrekt?Zeichenfolge vergleichen mit char

class Palindrome 
{ 
    public static void main(String[] args) 
    { 
     String original = "Dot is Got"; 

     int len = original.length(); 

     for (int i = 0; i < len; i++) { 
      char[] a = charAt[i]; 
     } 

     for (int j = len; j >= 0; j++) { 
      char[] b = charAt[j]; 
     } 

     if (a[] == b[]) { 
      System.out.print("Palindrome"); 
     } 
    } 
} 
+6

Nein, ist es nicht richtig. –

+0

Kompiliert es? Wenn es läuft, funktioniert es so, wie Sie es erwarten würden? Bitte geben Sie uns ein paar verschiedene Eingabezeichenfolgen, erwartete Ergebnisse und tatsächliche Ergebnisse. – rajah9

+2

Ich wollte einen Keks. Der Code hat mir keinen Cookie gegeben, als ich ihn ausgeführt habe. -1. –

Antwort

0

Ihr Code wird nicht einmal kompilieren.

for (int i= 0; i < len ; i++) 
{  
    char[] a = charAt[i]; 
} 

for (int j= len ; j>=0 ; j++) 
{ 
    char[] b = charAt[j];  
} 

Hier sind nicht Instanziierung das Array (a und b) mit einer Länge von 1, die das Überschreiben immer hält darüber hinaus sind sie lokale Variable machen, die nicht außerhalb der Schleife zugegriffen werden.

Sie können keine Arrays vergleichen wie

if (a[]==b[]) 
{ 
    System. out. print("Palindrome"); 
} 

Was können Sie zu tun ist

public static void main (String[] args) 
{ 
    String original = "Dot is Got"; 
    StringBuilder sb = new StringBuilder(original); 
    if(original.equals(sb.reverse().toString())) { 
     System. out. print("Palindrome"); 
    } else { 
     System. out. print("Not a palindrome"); 
    } 
} 

zu this Siehe Umkehrfunktion zu verstehen.

Wenn Sie es noch die Art und Weise zu tun, wollen Sie dann tun es sind yo müssen Ihren Code

public class Palindrome { 
    public static void main (String[] args) 
    { 
     String original= "Dot is Got"; 
     int len = original.length(); 
     boolean palindrome = true; 
     for (int i= 1; i <= len ; i++) 
     { 
      if(original.charAt(len-i) == original.charAt(i-i)) { 
       continue; 
      } else { 
       palindrome = false; 
       break; 
      } 
     } 
     if(palindrome) { 
      System.out.println("Palindrome"); 
     } else { 
      System.out.println("Not a Palindrome"); 
     } 
    } 
} 
1

Ich denke, ändern, dass Sie versuchen, was eher um dies zu erreichen ist:

String original = "Dot is Got"; 

int len = original.length(); 
char[] a = new char[len]; 
for (int i = 0; i < len; i++) { 
    a[i] = original.charAt(i); 
} 
char[] b = new char[len]; 
for (int j = len - 1; j >= 0; j--) { 
    b[len - 1 - j] = original.charAt(j); 
} 

if (Arrays.equals(a, b)) { 
    System.out.print("Palindrome"); 
} else { 
    System.out.print("Not a palindrome"); 
} 

Ausgang:

 
Not a palindrome