A division using ArrayList

0

Exercise: Using ArrayList create a program that divides 2 very large numbers (digits greater than 10).

I already 'solved' the exercise but it does not occupy ArrayList because I did not know how to apply it. I do not know how. Could you give me any suggestions? please?

public class Main {

    static void division(List<Integer> lista, List<Integer> listb) {

        List<Integer> listResult = new ArrayList<>();

        if (lista.size() <= 10 || listb.size() <= 10) {
            System.out.println("Los numeros deben ser mayores a 10");
        } else {double a = 0, j = 0;
            String Stringnumber = "";
            String Stringnumber2 = "";

            for (int number : lista) {
                Stringnumber += String.valueOf(number);
            }

            for (int number : listb) {
                Stringnumber2 += String.valueOf(number);
            }

            double test = Double.parseDouble(Stringnumber2);
            double test2 = Double.parseDouble(Stringnumber);

            double dividend = 0, divisor = 0;

            if (test >= test2) {
                dividend = test;
                divisor = test2;
            } else {
                dividend = test2;
                divisor = test;
            }

            for (int i = 9; i > 0 && j != 1; i--) {
                if (i * divisor <= dividend) {
                    listResult.add(i);

                    a = dividend - (i * divisor);
                    if (a >= divisor) {
                        i = 9;
                    } else {
                        j = 1;
                    }
                }
            }

            System.out.println("El resultado es:");
            for (int i = 0; i < listResult.size(); i++) {
                System.out.println(listResult.get(i));
            }

        }
    }

    public static void main(String[] args) {

        Scanner x = new Scanner(System.in);

        List<Integer> lista = new ArrayList<>();
        List<Integer> listb = new ArrayList<>();

        System.out.println("De un numero");
        for (char digit : x.nextLine().toCharArray()) {
            lista.add(digit - '0');
        }

        System.out.println("De otro numero");
        for (char digit : x.nextLine().toCharArray()) {
            listb.add(digit - '0');
        }
        x.nextLine();

        division(lista, listb);
    }

}
    
asked by Michelle 15.09.2017 в 08:18
source

1 answer

1

If you do not have to use Arrays, I would do something like that.

public class MainApp {

    public static void main(String[] args) {

        double num1 = 0;
        double num2 = 0;

        pedirNumeros(num1, num2);       

    }


    public static void pedirNumeros(double num1, double num2){
        Scanner x = new Scanner(System.in);     
        float resultado;

        System.out.println("De un primer numero mayor a 10 cifras");
        num1 = x.nextDouble();
        while(num1/1000000000 < 1){
            System.out.println("No es correcto: De un numero mayor a 10 cifras");
            num1 = x.nextDouble();
        }

        System.out.println("De un segundo numero mayor a 10 cifras");
        num2 = x.nextDouble();
        while(num2/1000000000 < 1){
            System.out.println("No es correcto: De un numero mayor a 10 cifras");
            num2 = x.nextDouble();
        }  

        resultado = dividir(num1, num2);
        System.out.println("El resultado es: " + resultado);
    }

    public static float dividir(double num1, double num2){
        if(num1 > num2){
            return (float)(num1/num2);
        }else{
            return (float)(num2/num1);  
        }
    }

}

Or something similar using an Array:

public class MainApp {

    public static void main(String[] args) {

        pedirNumeros();          

    }


    public static void pedirNumeros(){
        Scanner x = new Scanner(System.in);     
        List<Double> listaNumeros = new ArrayList<>();
        float resultado;

        System.out.println("De un primer numero mayor a 10 cifras");
        listaNumeros.add(0, x.nextDouble());
        while(listaNumeros.get(0)/1000000000 < 1){
            System.out.println("No es correcto: De un numero mayor a 10 cifras");
            listaNumeros.add(0, x.nextDouble());
        }

        System.out.println("De un segundo numero mayor a 10 cifras");
        listaNumeros.add(1, x.nextDouble());
        while(listaNumeros.get(1)/1000000000 < 1){
            System.out.println("No es correcto: De un numero mayor a 10 cifras");
            listaNumeros.add(1, x.nextDouble());
        }  

        resultado = dividir(listaNumeros);
        System.out.println("El resultado es: " + resultado);
    }

    public static float dividir(List<Double> listaNumeros){
        if(listaNumeros.get(0) > listaNumeros.get(1)){
            return (float)(listaNumeros.get(0)/listaNumeros.get(1));
        }else{
            return (float)(listaNumeros.get(1)/listaNumeros.get(0));    
        }
    }

}
    
answered by 15.09.2017 в 09:23