2016-03-08 25 views
0

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

看看numArray int[] numArray = new int[10];之后 - 它是用零初始化。

+0

好的,我明白你的意思了。我如何初始化它,而不使用零? – JimBob101

+0

您应该阅读有关基本数据类型及其初始化的信息,例如。 [这里](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html)。也许原始人不是这里最好的选择。 – kolejnik

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 + " "); 
    } 

} 

如果一个值在一组已经存在,就不能再次添加。数组不是最适合你的问题,因为它们必须以固定的大小进行初始化,并且你不知道用户将通知多少不同的值。

+0

这对我的情况不起作用)= – JimBob101

+0

为什么不,@ JimBob101? – andrucz