Как создать массив из другого массива с условием?
мне нужно создать новый массив из старого. С клавиатуры вводятся цены, далее указывается размер скидки, номер позиции, с которой применить нужно ее и количество позиций, к которым нужно применить скидку. Сразу оговорка - я самостоятельно изучаю Java и имею крайне мало опыта) Вот начало моего кода:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in); // Объявляем Scanner
System.out.println("Введите количество новых цен: ");
int size = input.nextInt(); // Читаем с клавиатуры размер массива и записываем в size
int array[] = new int[size]; // Создаём массив int размером в size
System.out.println("Введите новые цены:");
/*Пройдёмся по всему массиву, заполняя его*/
for (int i = 0; i < size; i++) {
array[i] = input.nextInt(); // Заполняем массив элементами, введёнными с клавиатуры
}
System.out.print("Новые цены:");
for (int i = 0; i < size; i++) {
System.out.print(" " + array[i]); // Выводим на экран, полученный массив
}
System.out.println();
System.out.println();
System.out.println("Введите размер скидки: ");
int discount = input.nextInt(); // Читаем с клавиатуры размер скидки
if (discount > 99) {
System.out.println("Размер скидки от 1 до 99! Введите корректное значение скидки: ");
discount = input.nextInt();
}
System.out.println("С какой позиции применить скидку?");
int offset = input.nextInt();
System.out.println("К какому количеству позиций необходимо применить скидку?");
int readLenght = input.nextInt();
int arrayNew[] = new int[readLenght];
for (int i = 0; i < arrayNew.length; i++) {
System.out.println(arrayNew[i]);
}
}
}
Что делать дальше и как его объявить - я не знаю
Ответы (1 шт):
Автор решения: Вячеслав
→ Ссылка
Да, помог Arrays.copyOfRange. По условию задачи - скопировать массив чисел и произвести с ними действие. Все заработало.
public static void rageDis(int readLength, int[] array, int offset, int discount) {
int arrayNew[] = Arrays.copyOfRange(array, offset - 1, offset - 1 + readLength);
for (int i = 0; i < readLength; i++) {
double percent = ((double) (arrayNew[i] * discount)) / 100.0;
double discountPrice = arrayNew[i] - percent;
int finalPrice = (int) Math.floor(discountPrice);
System.out.print(finalPrice + " ");
}