2016-03-08 48 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