在没有集合的情况下获取数组中的唯一元素

时间:2018-07-02 12:31:42

标签: java

如果在for循环之前使用布尔线,则无法获得所需的输出。 有人可以向我解释此代码。这段代码是在不使用集合的情况下获取数组中的唯一元素。有人对此进行了深入解释。这段代码有效,但我需要解释

   public class unique_array {

        public static void getUnique(int[] arr)

        {
            for(int i=0;i<arr.length;i++)
            {
                boolean flag = false;
                for(int j=0;j<i;j++)
                {
                    if(arr[i]==arr[j])
                    {
                        flag=true;
                        break;
                    }
                }
                if(!flag)
                {
                 System.out.println("unique element are: "+arr[i]);     
                }
            }
        }
        public static void main(String[] args) {
            int[] arr = {1,2,4,1,4,1,5,8,10};
            unique_array.getUnique(arr);

        }

    }

3 个答案:

答案 0 :(得分:1)

它确实像这样工作,因为您在循环开始时声明了boolean并将其值设置为false。然后,仅在满足以下条件时,才将其设置为true。如果在boolean循环之前声明了for,则只将boolean设置为false一次,一旦变为true,就永远不会设置它再次false。如果您在boolean flag;循环之前声明了for,然后在for循环中调用flag = false;

,它也将起作用。

答案 1 :(得分:0)

  

我试图用代码来回答

    public class unique_array {
    public static void getUnique(int[] arr){
        for(int i=0;i<arr.length;i++) ***// This is Outer Loop Run once will choose each element once for comparing  in arr[i]***
        {
            boolean flag = false;  ***// Here flag is Initializing every time to false for new Comparing loop below*** 
            for(int j=0;j<i;j++) ***// this is comparing loop for run for every selected arr[i] for each element is unique or not*** 
            {
                if(arr[i]==arr[j])
                {
                    flag=true; ***//when selected item from outer loop found in array it will break***
                    break;
                }
            }
            if(!flag) ***// if loop completed and flag remains false***
            {
             System.out.println("unique element are: "+arr[i]);      
            }
        }
    }
    public static void main(String[] args) {
        int[] arr = {1,2,4,1,4,1,5,8,10};
        unique_array.getUnique(arr);

    }

}

答案 2 :(得分:0)

  1. 第一个for:迭代数组中的所有元素,并将其他步骤应用于每个元素。
  2. 您准备一个布尔标志并将其设置为指示尚未找到该元素。请注意,在第二个for循环之前,此处会初始化boolean标志,因为这样一来,它将在外循环的每次迭代开始时将其重置为所需的“未找到”状态。
  3. second for:由数组中的外部循环迭代直到当前元素(但不包括当前元素)的所有元素,并检查是否存在相同的值。如果值相同,则设置标志以指示已经找到该值一次(并打印出来,如我们稍后所见),因此可以退出循环(break;
  4. 如果该标志指示已找到该值(== true),则不要再次打印它,但是如果该标志表明之前未找到/打印该值,则将其打印出来。