我必须创建一个包含10个数字的数组,然后将该数组复制到一个没有重复项的新数组中。我得到了它将清除重复的地步但由于某种原因我确定一个数字不在新数组中它不会让我把它放在那里。这就是我到目前为止所拥有的。感谢。
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;
}
}
答案 0 :(得分:4)
不看其余的逻辑,这个
if(results=false);
看起来不正确
if (results == false)
,或更简洁,if (!results)
if
子句的计算结果如何,都将执行以下块。 ;
正在创建一个空块,它非常有效。答案 1 :(得分:0)
有两个错误:
break;
语句不应该存在:那会让你脱离循环,但是你需要循环来继续迭代数组,直到所有元素都被复制。if (!result)
也存在一些风格问题:
found
变量array2
或array
时,您有array1
。 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;
}
在您的主要方法中,为什么有i
的循环和j
的循环?同时使它们i
- 循环变量只在循环中具有范围,因此没有冲突。
答案 2 :(得分:0)
除了Brian Agnew已经提到的if (results=false)
之外,我看到了:
array[j]=array2[count];
您将覆盖数组中的值,其中您使用未初始化的第二个数组的值存储输入。你可能打算做
array2[count] = array[j];
这里。