Заполнение 2х массивов целыми и дробными числами через Scanner
подскажите как сделать ввод элементов для массивов целых и float чисел через Scanner, чтобы целые записывались в свой массив, а float в другой. И если один из массивов полон, то перестать записывать туда значения. Пока программа выглядит вот так
Scanner scanner = new Scanner(System.in);
int arraySize = 3;
int[] integerArray = new int[arraySize];
float[] floatArray = new float[arraySize];
int integerCount = 0;
int floatCount = 0;
do {
for (int i = 0, j = 0; i < arraySize && j < arraySize; i++, j++) {
if (scanner.hasNextInt()) {
integerArray[i] = scanner.nextInt();
integerCount++;
} else if (scanner.hasNextFloat()) {
floatArray[j] = scanner.nextFloat();
floatCount++;
}
}
} while (integerCount != arraySize && floatCount != arraySize);
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Внешний цикл while, integerCount и floatCount убираем. В цикле for убираем автоматическое увеличение счетчиков i и j, увеличиваем их вручную, когда введено значение соответствующего типа (соответственно, i будет вместо integerCount, j - вместо floatCount). Также нужно добавить проверку выхода индексов за границы массива.
Scanner scanner = new Scanner(System.in);
int arraySize = 3;
int[] integerArray = new int[arraySize];
float[] floatArray = new float[arraySize];
for (int i = 0, j = 0; i < arraySize || j < arraySize; ) {
System.out.printf("Нужно ввести еще %d целых чисел и %d чисел с плавающей точкой\n", arraySize - i, arraySize - j);
if (scanner.hasNextInt()) {
if (i >= arraySize) {
System.out.println("Массив integerArray полон");
scanner.next(); // Игнорируем то что было введено
} else {
integerArray[i] = scanner.nextInt();
i++;
}
} else if (scanner.hasNextFloat()) {
if (j >= arraySize) {
System.out.println("Массив floatArray чисел полон");
scanner.next(); // Игнорируем то что было введено
} else {
floatArray[j] = scanner.nextFloat();
j++;
}
} else {
System.out.println("Ошибка: нужно вводить только целые числа или числа с плавающей точкой");
scanner.next(); // Игнорируем то что было введено
}
}
System.out.println(Arrays.toString(integerArray));
System.out.println(Arrays.toString(floatArray));
Пример ввода-вывод:
Нужно ввести еще 3 целых чисел и 3 чисел с плавающей точкой
1
Нужно ввести еще 2 целых чисел и 3 чисел с плавающей точкой
1,1
Нужно ввести еще 2 целых чисел и 2 чисел с плавающей точкой
dfger
Ошибка: нужно вводить только целые числа или числа с плавающей точкой
Нужно ввести еще 2 целых чисел и 2 чисел с плавающей точкой
2
Нужно ввести еще 1 целых чисел и 2 чисел с плавающей точкой
4
Нужно ввести еще 0 целых чисел и 2 чисел с плавающей точкой
5
Массив integerArray полон
Нужно ввести еще 0 целых чисел и 2 чисел с плавающей точкой
1.5
Ошибка: нужно вводить только целые числа или числа с плавающей точкой
Нужно ввести еще 0 целых чисел и 2 чисел с плавающей точкой
1,5
Нужно ввести еще 0 целых чисел и 1 чисел с плавающей точкой
1,7
[1, 2, 4]
[1.1, 1.5, 1.7]