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

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; //没有
           }
          }
繁星点点滴滴
浏览 531回答 4
4回答

陪伴而非守候

为什么我跑的结果是 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; }

繁花如伊

想法基本没问题,但是没必要写的那么复杂,一旦遇到重复的了,就可以跳出循环了。写了个简单点的例子: 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; }

aluckdog

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

相关分类

Java