关于在数组中保存和打印不同的数字

时间:2016-03-08 21:09:48

标签: java arrays

在你帮助我之前这是一个家庭作业,我完成了大部分工作,但有一件事我无法弄清楚,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;
}

}

2 个答案:

答案 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 - 用零初始化它。