Напишите программу, которая читает список действительных чисел. По завершении программы он должен распечатывать только уникальные номера. То есть, только цифры, которые появляются один раз в списке. Если есть более чем 50 уникальных номеров в списке, то вы должны напечатать только первые 50. Код:Java: ошибки в программе?
import java.util.*;
import java.io.*;
import java.util.Arrays;
public class Hmwk {
public static void main(String[] args) throws FileNotFoundException {
Scanner input=new Scanner (new File ("input.txt"));
int n = 0;
double[] numbersArray = new double[100000];
while (input.hasNextDouble()){
double in = input.nextDouble();
numbersArray[n]=in;
n++;
}
Arrays.sort(numbersArray);
inList(numbersArray);
double[] uniqueArray = Arrays.copyOfRange(numbersArray, 0, n);
printReport(uniqueArray);
}
public static double[] inList(double[] list){
int position = 0;
final int MAX_SIZE = 50;
double [] uniqueArray = new double[MAX_SIZE];
for (int i = 0; i < list.length; i++){
for (int j = 1; j < list.length; j++){
if (list[i] != list[j]){
uniqueArray[position]= i;
position++;
}
}
}
return uniqueArray;
}
public static void printReport(double[] list)
{
System.out.println("The unique numbers were");
System.out.println(Arrays.toString(list));
}
}
После создания нового алгоритма и происходит в моей книге я снова придумал выше коду объясните проблему вверху. Я попытался отсортировать все числа в массиве, который я привел из input.txt. Затем я попытался сравнить индексы чисел, используя inList. Я попытался сравнить его с индексом [0] с [1], [1] до [2] и т. Д. Если это отсортированный список, если числа в сравниваемых индексах равны, это не уникальный номер для списка, но если они разные, они являются уникальным числом и добавляются в uniqueArray. Тем не менее, я получаю следующую ошибку.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 50
at Hmwk.inList(Hmwk.java:33)
at Hmwk.main(Hmwk.java:20)
Любые идеи для меня? И, как всегда, я действительно ценю ваше время.
'list' - это массив из 50 000 элементов, и вы выполняете цикл от' 0' до 'list.length', но' uniqueArray' содержит только 50 элементов. Так что да, вы попадете в индекс массива за пределы. –
Как бы я начал цикл с [0] до последнего двойника не 0.0 в моем списке? – user102817
Итак, если у вас есть список из 10 000 '3', за которыми следуют отдельные цифры, должна ли ваша программа найти все четкие цифры? Или, просто вернем 3? Я не понимаю этого задания. –