2016-04-25 2 views
0

Ich versuche, ein Palindrome (das Gegenteil von Word ist das Wort selbst, beispielsweise Tacocat) Checker in Java. Ich benutze diesen Code:PalindromeChecker comparTo

private static void PalindroomChecker(String sWord){ 
    char[] arrcWord=sWord.toCharArray(); 
    char[] arrcDrow=new char[arrcWord.length]; 
    for(int i=0;i<arrcWord.length;i++) 
     for(int j=arrcDrow.length-1;j>=0;j--) 
      arrcDrow[j]=arrcWord[i]; 
    String sDrow=new String(arrcDrow); 
    if(sWord.compareTo(sDrow)==0) 
     System.out.println(sWord); 
    else 
     System.out.println("false"); 
} 

ich aus irgendeinem Grund falsch halten Druck. Aus irgendeinem Grund gibt es kein Palindrom, nicht einmal Tacocat.

+1

warum brauchen Sie zwei Schleifen? –

+0

so kann ich das erste Array in der zweiten –

Antwort

0

Sie brauchen nur den Index. Das sollte funktionieren.

private static void PalindroomChecker(String sWord) { 
    char[] arrcWord = sWord.toCharArray(); 
    char[] arrcDrow = new char[arrcWord.length]; 
    int i = 0; 
    for (int j = arrcDrow.length - 1; j >= 0; j--) 
     arrcDrow[j] = arrcWord[i++]; 
    String sDrow = new String(arrcDrow); 
    if (sWord.compareTo(sDrow) == 0) 
     System.out.println(sWord); 
    else 
     System.out.println("false"); 
} 
+0

tatsächlich umkehren. Ich verstehe Ihren Code völlig, aber ich verstehe nicht, warum mein Weg nicht funktioniert. Danke sowieso :) –

+0

Ihr Code funktioniert nicht, weil Sie die falsche Logik haben. Sie setzen den Wert des i-ten Index auf diese Zeile 'arrcDrow [j] = arrcWord [i];'. Wenn i also 0 ist, wird der 0-te Indexwert an der gesamten Stelle in 'arrcDrow' gesetzt und wenn ich den letzten Index erreicht habe, wird 'arrcDrow' mit dem gleichen Wert gefüllt. Bitte akzeptieren Sie die Antwort, wenn es Ihnen geholfen hat. –

+0

Oh mein Gott in der Tat. Jetzt habe ich es verstanden. Es tut mir sehr leid, dass ich so dumm bin. Gott verdammt, warum habe ich das nicht selbst gesehen? Danke Jungs –

0

Sie haben, vielleicht, warum Sie den Code aus anderen Antworten nicht funktioniert ... hier ist ein kein Loop Ansatz ist es viel einfacher ::

public static void main(String[] args) { 
    String yourString = "tacocat"; 
    StringBuilder a = new StringBuilder(yourString); 
    System.out.println(a.reverse().toString().equals(yourString) ? true : false); 
} 
+0

Vielleicht könnten Sie Leerzeichen entfernen und mit equalsIgnoreCase() vergleichen – Svoice