如果在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);
}
}
答案 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)
for
:迭代数组中的所有元素,并将其他步骤应用于每个元素。for
:由数组中的外部循环迭代直到当前元素(但不包括当前元素)的所有元素,并检查是否存在相同的值。如果值相同,则设置标志以指示已经找到该值一次(并打印出来,如我们稍后所见),因此可以退出循环(break;
)