使用Java而不使用内置方法在数组中打印非重复整数元素

时间:2019-01-17 19:17:01

标签: java arrays loops duplicates logic

 public class Exercise {
  public static void main(String[] args) 
    {
        int[] my_array = {1, 2, 5, 5, 6, 6, 7, 2};

        for (int i = 0; i < my_array.length-1; i++)
        {
            for (int j = i+1; j < my_array.length; j++)
            {
                if ((my_array[i] == my_array[j]) && (i != j))
                {
                    System.out.print(my_array[j]);
                }
            }
        }
    }    
}

输入:{1、2、5、5、6、6、7、2} 输出:{1,7}

我只需要在数组中仅打印非重复元素,而无需使用上面的示例中的内置方法。请提供帮助。谢谢

尝试了以下方法,但不适用于所有输入:

public class Exercise {
public static void main(String[] args) 
{
int[] my_array = {1, 2, 5, 5, 6, 6, 7, 2};
int[] unique = new int[20];
int uniqueLength = 0;

outerloop:for (int i = 0; i < my_array.length; i++)
{
for (int j = 0; j < uniqueLength; j++)
{
if (my_array[i] == unique[j])
{
continue outerloop;
}
}
unique[uniqueLength] = my_array[i];
System.out.println(my_array[i]);
uniqueLength++;
}
} 
}

2 个答案:

答案 0 :(得分:0)

您可以尝试一下。

public class Exercise {

   public static void main(String []args) {
      int[] my_array = {1, 2, 5, 5, 6, 6, 7, 2};

      for (int i = 0; i < my_array.length-1; i++)
         {
          boolean is_non_dupe = true;
          for (int j = 0; j < my_array.length; j++)
            {
             if ((my_array[i] == my_array[j]) && (i!=j))
              {
                is_non_dupe = false;
              }
           }
           if(is_non_dupe){
            System.out.println(my_array[i]); 
           }
     }
  } 
}

OP:{1,7}

答案 1 :(得分:0)

要仅打印非重复数字,该代码与您显示的代码非常相似,不同之处是// AssertionError [ERR_ASSERTION]: Expected inputs to be strictly equal: // // 1 !== 0 循环必须迭代所有值,并且需要将print语句移出{{1} }循环,因此您可以在找不到重复项时进行打印,而不必自己打印重复项。

j

输出

j