在你帮助我之前这是一个家庭作业,我完成了大部分工作,但有一件事我无法弄清楚,0根本没有被检测到。这意味着如果我输入0-9进入数组,它将告诉我只有9个不同的数字,当真的应该有10并且它将打印出所有数字但是0.任何人都可以看到问题并请向我解释因为我需要了解它。
package javaproject.pkg2;
import java.util.Scanner;
public class JavaProject2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] numArray = new int[10];
int d = 0;
System.out.println("Enter Ten Numbers: ");
for(int i = 0; i < numArray.length; i++){
int num = input.nextInt();
if(inArray(numArray,num,numArray.length)){
numArray[i] = num;
d++;
}
}
System.out.println("The number of distinct numbers is " + d);
System.out.print("The distinct numbers are: ");
for(int i = 0; i < d; i++){
System.out.print(numArray[i] + " ");
}
}
public static boolean inArray(int[] array, int searchval, int numvals){
for (int i =0; i < numvals; i++){
if (searchval == array[i]) return false;
}
return true;
}
}
答案 0 :(得分:2)
您可以使用集合来识别不同的值:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Set<Integer> distinctNumbers = new LinkedHashSet<>();
System.out.println("Enter ten Numbers: ");
for (int i = 0; i < 10; i++) {
int number = input.nextInt();
distinctNumbers.add(number);
}
System.out.println("The number of distinct numbers is " + distinctNumbers.size());
System.out.print("The distinct numbers are: ");
for (Integer number : distinctNumbers){
System.out.print(number + " ");
}
}
如果某个值中已存在某个值,则无法再次添加该值。数组不是最适合您的问题,因为它们必须使用固定大小进行初始化,并且您不知道用户将通知多少个不同的值。
答案 1 :(得分:0)
在int[] numArray = new int[10];
之后看一下numArray - 用零初始化它。