import java.util.Scanner;public class Match {
public static void main(String[] args) {
Scanner input= new Scanner(System.in);
System.out.println("请输入某一字符串:");
String str1= input.next();
System.out.println("请输入待匹配字符串:");
String str2= input.next();

char[] arr1= new char[str1.length()];
char[] arr2= new char[str2.length()];

arr1=str1.toCharArray();
arr2=str2.toCharArray();

if(equals(arr1,arr2)==false){
System.out.println("两字符串一致!");
}else{
System.out.println("两字符串不一致!");
}
}

public static  boolean equals(char[] a,char[] b){
char tempA;
char tempB;
for(int i=0; i<a.length; i++){
for(int j=0; j<a.length-i-1; j++){
if(a[j]>a[j+1]){
tempA=a[j];
a[j]=a[j+1];
a[j+1]=tempA;
}
}
}

for(int k=0; k<a.length; k++){
System.out.print(a[k]+" ");
}

System.out.println();

for(int i=0; i<b.length; i++){
for(int j=0; j<b.length-i-1; j++){
if(b[j]>b[j+1]){
tempB=b[j];
b[j]=b[j+1];
b[j+1]=tempB;
}
}
}

for(int k=0; k<b.length; k++){
System.out.print(b[k]+" ");
}

System.out.println();

a.toString();
b.toString();

if(a.equals(b))//???????????????????
return true;
else
return false;
}
}
为什么返回的是false?

解决方案 »

  1.   

    输入jiangzuzu    zujinagzu
    为什么返回的是false?
      

  2.   

    我拿去运行 了 结果 
    请输入某一字符串:
    jiangzuzu
    请输入待匹配字符串:
    zujinagzu
    a g i j n u u z z 
    a g i j n u u z z 
    两字符串一致!
    没问题~~
    CLEAN 重新编译下
      

  3.   

    jiangzuzu
    请输入待匹配字符串:
    zujinagzu
    a g i j n u u z z 
    a g i j n u u z z 
    两字符串一致!
      

  4.   


    API里面是这样说的:public boolean equals(Object anObject)将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。 覆盖:
    类 Object 中的 equals
    参数:
    anObject - 与此 String 进行比较的对象。 
    返回:
    如果给定对象表示的 String 与此 String 相等,则返回 true;否则返回 false。
      

  5.   

    楼主问的是 a.equals(b) 为什返回的是 false 么?
    a 和 b 比较 调用的是 Object 的 equals 方法
    比较的就是地址
    a 和 b 不是同一地址,当然为 false 
      

  6.   

    你是不是就是要比较两个字符串是不是相同,不知道你为什么要这么做,直接str1.equals(str2)不就解决了吗?怎么整得这么麻烦,感觉有点画蛇添足了。
    if(str1.equals(str2)){
      return true;
    }else{
      return false;
    }
      

  7.   

    if(equals(arr1,arr2)==true){
    System.out.println("两字符串一致!");
    }else{
    System.out.println("两字符串不一致!");
    }
    }这段是这样的...
      

  8.   

    你们仔细看下代码~~~楼主类里 定义 equals 方法~~~ 不是String 类里的equals
      

  9.   

    import java.util.Arrays;
    import java.util.Scanner;public class Match { public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("请输入某一字符串:");
    String str1 = input.next();
    System.out.println("请输入待匹配字符串:");
    String str2 = input.next(); char[] arr1 = new char[str1.length()];
    char[] arr2 = new char[str2.length()]; arr1 = str1.toCharArray();
    arr2 = str2.toCharArray(); if (equals(arr1, arr2)) {
    System.out.println("两字符串一致!");
    } else {
    System.out.println("两字符串不一致!");
    }
    } public static boolean equals(char[] a, char[] b) { if (a == b) {
    return true;
    } if (a == null || b == null) {
    return false;
    } if (a.length != b.length) {
    return false;
    } Arrays.sort(a);
    Arrays.sort(b); for (int i = 0; i < a.length; i++) {
    if (a[i] != b[i]) {
    return false;
    }
    } return true; }
    }按你的需求改的,你看下有没错
      

  10.   

    发现更好的……
    这样就行了  public static boolean equals(char[] a, char[] b) { if (a == b) {
    return true;
    } if (a == null || b == null) {
    return false;
    } Arrays.sort(a);
    Arrays.sort(b);
    return Arrays.equals(a, b);
    }
      

  11.   

    使用了 Arrays的sort方法,继续使用  public static boolean equals(char[], char[]);
      

  12.   


     public static boolean equals(char[] a, char[] b) {        if (a == b) {
                return true;
            }        if (a == null || b == null) {
                return false;
            }        Arrays.sort(a);
            Arrays.sort(b);
            return Arrays.equals(a, b);
        }挺好的~~