为了账号安全,请及时绑定邮箱和手机立即绑定

Java这段代码为什么会返回 false?传入的是字符串[1,1]

Java这段代码为什么会返回 false?传入的是字符串[1,1]

繁星点点滴滴 2019-02-22 05:50:32
public boolean xh_repeat(String[] arry) { //用于判断是否有重复值的标记 boolean flag=false; for (int i = 0; i < arry.length; i++) { String temp=arry[i]; int count=0; for (int j = 0; j < arry.length; j++) { String temp2=arry[j]; //有重复值就count+1 if(temp.equals(temp2)){ count++; } } //由于中间又一次会跟自己本身比较所有这里要判断count>=2 if(count>=2){ flag=true; } } if(flag){ return true; }else{ return false; //没有 } }
查看完整描述

4 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

为什么我跑的结果是 true?

public class Test {
    public static void main(String[] args) {
        String[] arr = new String[2];
        arr[0] = "1";
        arr[1] = "1";
        Assert.assertTrue(xh_repeat(arr));
    }

    public static boolean xh_repeat(String[] arry) {
        //用于判断是否有重复值的标记
        boolean flag = false;
        for (int i = 0; i < arry.length; i++) {
            String temp = arry[i];
            int count = 0;
            for (int j = 0; j < arry.length; j++) {
                String temp2 = arry[j];
                //有重复值就count+1
                if (temp.equals(temp2)) {
                    count++;
                }
            }
            //由于中间又一次会跟自己本身比较所有这里要判断count>=2
            if (count >= 2) {
                flag = true;
            }
        }
        if (flag) {
            return true;
        } else {
            return false; //没有
        }
    }
}

你的目的是检查字符串数组是否有重复的吧? 我觉得这样比较简单:

publi boolean isDuplicate(String[] arr) {
    Set<String> set = new HashSet<String>(Arrays.asList(arr));
    return set.size() != arr.length;
}
查看完整回答
反对 回复 2019-03-01
?
繁花如伊

TA贡献2012条经验 获得超12个赞

想法基本没问题,但是没必要写的那么复杂,一旦遇到重复的了,就可以跳出循环了。写了个简单点的例子:

public boolean xh_repeat(array){
  for(int i =0; i < array.length; i ++){
    String temp = array[i];
    for(int j = 0; j < array.length; j ++){
      if(temp.equals(array[j])){
        return true;
      }
    }
  }

  return false;
}
查看完整回答
反对 回复 2019-03-01
?
aluckdog

TA贡献1847条经验 获得超7个赞

虽然你代码风格非常烂,而且算法也不好,但是从代码来看,起码你字符串比较用的是equals方法,所以不可能返回false的。注意,传入的是字符串["1", "1"].
建议这种查找重复直接用map做就好了,空间换时间,O(1)的时间复杂度.

查看完整回答
反对 回复 2019-03-01
  • 4 回答
  • 0 关注
  • 530 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信