Java 简单数组复制问题
我必须制作一个10个数字的数组,然后将该数组复制到一个没有重复的新数组中。我已经达到了可以清除DUP的程度,但由于某种原因,在我确定新阵列中还没有一个数字后,它就不允许我将其放入其中。这就是我目前所拥有的。谢谢Java 简单数组复制问题,java,arrays,Java,Arrays,我必须制作一个10个数字的数组,然后将该数组复制到一个没有重复的新数组中。我已经达到了可以清除DUP的程度,但由于某种原因,在我确定新阵列中还没有一个数字后,它就不允许我将其放入其中。这就是我目前所拥有的。谢谢 import java.util.*; import java.io.*; public class PrintingDistinctNumbers { public static void main(String[] args) { int[] array
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);
看起来不对
if(结果==false)
,或者更简洁地说,如果(!结果)if
子句的计算结果是什么,都将执行以下块。;
正在创建一个完全有效的空块break;
语句不应该存在:这将使您脱离循环,但您需要循环在数组中不断迭代,直到所有元素都被复制还有一些风格问题:
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
-循环变量在循环中只有作用域,因此没有冲突。有两个错误:
break;
语句不应该存在:这将使您脱离循环,但您需要循环在数组中不断迭代,直到所有元素都被复制还有一些风格问题:
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