2016-06-21 72 views
-3

此編碼是否正確?使用字符對比字符串

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];  
} 

在這裏,你沒有實例化的陣列(a和b)與長度爲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