О сохранении и печати отдельных чисел в массиве

100
10

прежде чем вы поможете мне, это домашнее задание, я больше всего его делаю, но есть одна вещь, которую я не могу понять, 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;
}

}

спросил(а) 2016-03-09T00:09:00+03:00 4 года, 7 месяцев назад
1
Решение
71

Вы можете использовать набор для идентификации различных значений:

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

}

Если значение уже существует в наборе, его нельзя добавить снова. Массивы не подходят для вашей проблемы, поскольку они должны быть инициализированы фиксированным размером, и вы не знаете, сколько различных значений пользователь будет информировать.

ответил(а) 2016-03-09T00:41:00+03:00 4 года, 7 месяцев назад
41

Взгляните на numArray после int[] numArray = new int[10]; - инициализируется нулями.

ответил(а) 2016-03-09T00:24:00+03:00 4 года, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема