2017-07-27 111 views
0

爲什麼字符串比較失敗?Java字符串比較失敗

package javaapplication57; 

/** 
* 
* @author amit 
*/ 
public class JavaApplication57 { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     String a = "anagram"; 
     String b = "margana"; 
     int len = a.length(); 
     char[] temp = a.toCharArray(); 
     char[] temp2 = b.toCharArray(); 
     int len2 = b.length(); 

     for(int j = 0; j<len-1; j++) 
     {  
      for(int i = 0; i<len-1; i++) 
      { 
       if(temp[i]>temp[i+1]) 
       { 
        char t = temp[i]; 
        temp[i] = temp[i+1]; 
        temp[i+1] = t; 
       } 
      } 
     } 
     //System.out.println(temp); 

     for(int j = 0; j<len2-1; j++) 
     {  
      for(int i = 0; i<len2-1; i++) 
      { 
       if(temp2[i]>temp2[i+1]) 
       { 
        char t = temp2[i]; 
        temp2[i] = temp2[i+1]; 
        temp2[i+1] = t; 
       } 
      } 
     } 
     //System.out.println(temp2); 
     if(temp.equals(temp2)) 
     { 
      System.out.println("yes"); 
     } 
    } 

} 
+1

請解釋「失敗」是什麼意思 - 你期望這段代碼做什麼,它沒有做什麼? –

+2

'temp'和'temp2'是'char []',並且在它們之間使用'equals'不起作用(它不會像你認爲的那樣)。試試這個:'if(Arrays.equals(temp,temp2))' – Jesper

+0

究竟是什麼問題?它在哪裏失敗?你的代碼是做什麼的?它應該做什麼? –

回答

4

你沒有比較字符串。您正在比較char的數組。數組不會覆蓋Objectequals,因此equals的行爲與==相同。您可以從想要比較的陣列中創建String,然後在得到的String上運行equals

if(new String(temp).equals(new String(temp2))) 
0

只需使用.equals方法從Java

String a = "anagram"; 
String b = "margana"; 
if(a.equals(b){ 
    System.out.pring("equals"); 
}else{ 
    System.out.pring("not equals"; 
} 
1

假如你不使用內置的方法,你必須爲的情況下,第一次檢查:兩個字符串的長度必須相等。在檢查長度是否相等之後,不需要使用char數組就可以通過兩個字符串。

public static boolean equals(String str, String str2){ 

     if(str.length() != str2.length()){ 
     return false; 
     } 
     for(int i=0; i<str.length(); i++){ 
     if(str.charAt(i) != str2.charAt(i)){ 
      return false; 
     } 
     } 
     return true; 
    }