Округление массива до целочисленного массива - PullRequest
0 голосов
/ 14 января 2020

Я пытался решить эту проблему, но не мог обернуть голову вокруг нее .. "Создайте метод java int [] roundoff (вход ArrayList), который возвращает новый целочисленный массив, содержащий все входные двойные числа, правильно округленные до целых чисел. "

Вот где я дошел:

пакет javaProblem;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class TowMethods {
    public static int[] roundOff(ArrayList<Double> input) {

        int [] iL=new int[input.size()];
        for (double i:iL) {
            //input.get(i);
            int n=(int) Math.round(i) ;
            iL[n]=n;
        }
        System.out.print(Arrays.toString(iL));
        return (iL);

    }

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        ArrayList<Double> input1 = new ArrayList<Double>();
        input1.add(2.3);
        input1.add(1.3);
        input1.add(3.35);
       /* for (int i = 0; i < 3; i++) {
            double num = keyboard.nextDouble();
            input.add(num);
        }*/
        int[] iList = roundOff(input1);
        System.out.println(Arrays.toString(iList));

    }
}

Ответы [ 3 ]

1 голос
/ 14 января 2020

Пожалуйста, попробуйте использовать значимые имена, когда вы называете свои переменные. Также внутри метода roundOff вместо foreach l oop используйте classi c for l oop и не выполняйте итерацию по вновь созданному целочисленному массиву, а по ArrayList, который вы берете в качестве параметра.

Вот возможное решение:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class TowMethods {

    public static int[] roundOff(ArrayList<Double> inputs) {

        int [] integers=new int[inputs.size()];
        for (int i=0; i < inputs.size(); i++) {

            integers[i] = (int) Math.round(inputs.get(i));

        }

        return integers;

    }

    public static void main(String[] args) {
       // Scanner keyboard = new Scanner(System.in);
        ArrayList<Double> inputs = new ArrayList<Double>();

        inputs.add(2.3);
        inputs.add(1.3);
        inputs.add(3.35);

        /*
        for (int i = 0; i < 3; i++) {
            double num = keyboard.nextDouble();
            inputs.add(num);
        }
        */
        int[] iList = roundOff(inputs);
        System.out.println(Arrays.toString(iList));

    }
}

Если вы хотите получить пользовательский ввод, просто раскомментируйте закомментированные строки в методе main.

1 голос
/ 14 января 2020
for (int i = 0; i < input.size(); i++) {
    iL[i] = (int)(Math.round(input.get(i)));
}

Вместо вашего l oop в методе roundOff

0 голосов
/ 15 января 2020

Используйте Math.rint(), который правильно округляет до следующего значения int.

        double [] dbls = {2.4, 8.8, 22.23, 97.6};
        int[] ints = new int[dbls.length];

        for (int i = 0; i < dbls.length; i++) {
            ints[i] = (int)Math.rint(dbls[i]);
        }

        System.out.println(Arrays.toString(dbls));
        System.out.println(Arrays.toString(ints));

Печатает

[2,4, 8,8, 22,23, 97,6]
[2, 9, 22, 98]

...