Java 简单数组复制问题

Java 简单数组复制问题,java,arrays,Java,Arrays,我必须制作一个10个数字的数组,然后将该数组复制到一个没有重复的新数组中。我已经达到了可以清除DUP的程度,但由于某种原因,在我确定新阵列中还没有一个数字后,它就不允许我将其放入其中。这就是我目前所拥有的。谢谢 import java.util.*; import java.io.*; public class PrintingDistinctNumbers { public static void main(String[] args) { int[] array

我必须制作一个10个数字的数组,然后将该数组复制到一个没有重复的新数组中。我已经达到了可以清除DUP的程度,但由于某种原因,在我确定新阵列中还没有一个数字后,它就不允许我将其放入其中。这就是我目前所拥有的。谢谢

 import java.util.*;
 import java.io.*;
 public class PrintingDistinctNumbers
 {
   public static void main(String[] args)
   {
     int[] array=new int[10];
     int[] array2=new int[10];
     int num1;
     int count = 0;
     boolean results;
     //let the user input 10 numbers
     for(int i=0;i<array.length;i++)
     {
       Scanner input=new Scanner(System.in);
       System.out.println("please enter 10 numbers");
       num1=input.nextInt();
       array[i]=num1;
     }

     for (int j=0;j<array.length;j++)
     {
       results=search(array2 ,array[j],count);
       if(results=false);
       { 
         array[j]=array2[count];
         count++;
         break;
       }

     }
     // just a test to make sure the numbers copied over to the new array 
     System.out.println(array2[0]);
   }



   //search the second array to see if the int is allready in it 
   public static boolean search(int[] array2,int value,int count2)
   {
     //create variables
     boolean found;
     //set the variables
     found= false;
     //search the array
     for(int index=0;index<count2;index++)
     {
       if(array2[index]==value)
       {
         found=true;
         break;
       }
     }
     return found; 


   }

 }
import java.util.*;
导入java.io.*;
公共类打印区编号
{
公共静态void main(字符串[]args)
{
int[]数组=新的int[10];
int[]array2=新int[10];
int num1;
整数计数=0;
布尔结果;
//让用户输入10个数字

对于(inti=0;i,在不查看其余逻辑的情况下

 if(results=false);
看起来不对

  • 这是打字错误吗?如果(结果==false)
  • ,您需要
    if(结果==false)
    ,或者更简洁地说,如果(!结果)
  • 注意后面的分号,这意味着无论
    if
    子句的计算结果是什么,都将执行以下块。
    正在创建一个完全有效的空块

  • 不考虑你的逻辑,这

     if(results=false);
    
    看起来不对

  • 这是打字错误吗?如果(结果==false),您需要
    if(结果==false)
    ,或者更简洁地说,如果(!结果)
  • 注意后面的分号,这意味着无论
    if
    子句的计算结果是什么,都将执行以下块。
    正在创建一个完全有效的空块
  • 有两个错误:

  • if块中的
    break;
    语句不应该存在:这将使您脱离循环,但您需要循环在数组中不断迭代,直到所有元素都被复制
  • 测试将结果赋值为false,而不是比较结果,因此如果(!result)

  • 还有一些风格问题:

  • 您的搜索方法可能太长;您不需要
    found
    变量
  • 使用方法中有意义的参数命名:当范围中没有
    array
    array1
    时,您有
    array2
    。对于
    count2
  • 对于循环变量,更喜欢
    i
    而不是
    index
    ——它只需要更少的输入和读取
  • 这更像它应该看起来的样子:

    public static boolean search(int[] array, int value, int count) {
      for(int i = 0; i < count; i++) {
        if (array[i] == value) {
          return true;
        }
      }
      return false;
    
    公共静态布尔搜索(int[]数组,int值,int计数){
    for(int i=0;i
    }

    在main方法中,为什么一个循环使用
    i
    ,下一个循环使用
    j
    ?将它们都设置为
    i
    -循环变量在循环中只有作用域,因此没有冲突。

    有两个错误:

  • if块中的
    break;
    语句不应该存在:这将使您脱离循环,但您需要循环在数组中不断迭代,直到所有元素都被复制
  • 测试将结果赋值为false,而不是比较结果,因此如果(!result)

  • 还有一些风格问题:

  • 您的搜索方法可能太长;您不需要
    found
    变量
  • 使用方法中有意义的参数命名:当范围中没有
    array
    array1
    时,您有
    array2
    。对于
    count2
  • 对于循环变量,更喜欢
    i
    而不是
    index
    ——它只需要更少的输入和读取
  • 这更像它应该看起来的样子:

    public static boolean search(int[] array, int value, int count) {
      for(int i = 0; i < count; i++) {
        if (array[i] == value) {
          return true;
        }
      }
      return false;
    
    公共静态布尔搜索(int[]数组,int值,int计数){
    for(int i=0;i
    }

    在主方法中,为什么一个循环使用
    i
    ,下一个循环使用
    j
    ?将它们都设置为
    i
    -循环变量只在循环内有作用域,因此没有冲突。

    除了Brian Agnew已经提到的
    如果(results=false)
    ,我看到了这一点:

      array[j]=array2[count];
    
    您将用未初始化的第二个数组的值覆盖存储输入的数组中的值。您可能打算这样做

      array2[count] = array[j];
    
    这里。

    除了Brian Agnew已经提到的
    if(results=false)
    之外,我还看到:

      array[j]=array2[count];
    
    您将用未初始化的第二个数组的值覆盖存储输入的数组中的值。您可能打算这样做

      array2[count] = array[j];
    

    这里。

    谢谢你的评论,我没有注意到,但是当我输入整数后,甚至在修复后,尝试打印出array2的任何元素时,我仍然得到0的打印。谢谢你的评论,我没有注意到,但是当我输入整数后,尝试打印出array2的任何元素时,我仍然得到0的打印,即使是aft呃,修复方法。我还尝试在调用搜索方法的循环中移动计数声明,但我仍然为array2中的每个元素获取默认值0。我还尝试在调用搜索方法的循环中移动计数声明,但仍然为array2中的每个元素获取默认值0