2016-06-21 3 views
-3

Правильно ли этот код?Строка сравнить с использованием 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

нет, это не правильно. –

+0

Скомпилирует? Когда он работает, выполняет ли он себя так, как вы ожидали? Пожалуйста, дайте нам несколько разных строк ввода, ожидаемых результатов и фактических результатов. – rajah9

+2

Я хотел печенье. Когда я его запустил, код не дал мне cookie. -1. –

ответ

0

Ваш код даже не компилируется.

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

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

Здесь не Инстанцирование массива (а и б) с длиной 1, который всегда будет держать перезапись кроме того, вы делаете локальные переменным, которая не может быть доступна вне цикла.

Вы не можете сравнивать массивы как

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

Что вы можете сделать, это

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"); 
    } 
} 

См this понимать обратную функцию.

Если вы все еще хотите сделать это так, как вы делаете это, то лет нужно изменить свой код

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

Я предполагаю, что вы пытаетесь достичь, скорее это:

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"); 
} 

Выход:

 
Not a palindrome 
Смежные вопросы