Somma elementi al quadrato arraylist

di il
1 risposte

Somma elementi al quadrato arraylist

Creare un programma che legga una serie di valori numerici da tastiera (non necessariamente interi). L'inserimento termina quando viene inserito il valore 0.
Il programma dovra` calcolare e stampare la media dei quadrati di tutti i numeri inseriti. Ad esempio, se vengono inseriti 1, 2.5, -3, 0 il programma dovra` stampare (1^2 + (2.5)^2 + (-3)^2) / 3 = 5.41666666666666

io ho fatto questo ma il risultato non viene come dovrebbe, ho potuto confermare facendo il programma senza arraylist.

import java.util.*;

public class PrintMedieArrayList {
    public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);

        double n = 0;

        ArrayList<Double> lista = new ArrayList<>();

        do {

            System.out.println("Inserisci un numero: ");
            n = scan.nextDouble();
            lista.add(n);
            if (n == 0)
                break;

        } while (true);

        double pot = 0;

        int count = 0;

        for (int i = 0; i < lista.size(); i++) {
            double number = lista.get(i);
            pot = pot + (number * number);
            count++;
        }

        System.out.println("risultato: " + pot / count); //(pot / lista.size())
    }
}

1 Risposte

  • Re: Somma elementi al quadrato arraylist

    Il motivo per cui il risultato non torna è semplicissimo: quando l'utente introduce il valore 0 per terminare la sequenza, tu vai ad inserire tale valore nell'ArrayList. Di conseguenza, poi, nel calcolo vai a sommare 0^2 (che non cambia la somma) e incrementi il count anche per il valore 0. Quindi, invece di calcolare la media su 3 valori, la vai a calcolare su 4.

    La cosa si risolve semplicemente verificando il valore digitato PRIMA dell'inserimento nellArrayList. Se l'utente inserisce 0, non devi aggiungerlo.

Devi accedere o registrarti per scrivere nel forum
1 risposte