Así que tengo que crear este programa que lea una serie de 'salarios' de un archivo, luego agregue todos los salarios para devolver un 'salario total' y también calcule el promedio de todos los salarios.

El código que tengo actualmente está abajo:

package uploadTask7_countingSalaries;

//import utilities needed for the program
import java.util.Scanner;
import java.io.File;

public class countingSalaries {

    public static void main(String[] args) throws Exception { 
        // defines the file that data will be read from
        File salaryFile = new File("salaries.txt");
        // creates scanner object to read data from file
        Scanner scanFile = new Scanner (salaryFile);
        // creates while loop to read and print data to the user
        while(scanFile.hasNextDouble()) {
            double i = scanFile.nextDouble();
            System.out.println(i); }

        double addedSalary = scanFile.nextDouble();
        double sumofSalary = 0.0;
        while(scanFile.hasNextDouble()) {
            sumofSalary += addedSalary;
            addedSalary++; }

        System.out.println("Total salary is: " + addedSalary);

        }
    }

Hasta ahora he podido leer los salarios del archivo de texto e imprimirlos al usuario. Estoy luchando por encontrar una manera de sumar todos los números / calcular el promedio del archivo externo usando un bucle.

0
vdtango 26 oct. 2017 a las 22:03

3 respuestas

La mejor respuesta

Lo haría de esta manera. Parece que está intentando iterar dos veces sin reiniciar el iterador.

package uploadTask7_countingSalaries;

//import utilities needed for the program
import java.util.Scanner;
import java.io.File;

public class countingSalaries {

    public static void main(String[] args) throws Exception { 
        List<Double> salaries = new ArrayList<Double>();
        // defines the file that data will be read from
        File salaryFile = new File("salaries.txt");
        // creates scanner object to read data from file
        Scanner scanFile = new Scanner (salaryFile);
        // creates while loop to read and print data to the user
        while(scanFile.hasNextDouble()) {
            double i = scanFile.nextDouble();
            salaries.add(i);
            System.out.println(i); }

       double total = 0;
       for(double a : salaries){
        total = total + a;
       }

        System.out.println("Total salary is: " + total);
        System.out.println("Avg = " + total/salaries.size();

        }
    }
1
Tacitus86 26 oct. 2017 a las 19:21

Debe sumar los salarios después de leer cada uno de ellos en su ciclo while, así que después de cada lectura tendrá una suma parcial. Después de obtener la suma, puede calcular el promedio en función de la suma total y el recuento de elementos que ha leído.

0
yevgeniy.batulin 26 oct. 2017 a las 19:08

Prueba esto:

Necesita una variable int adicional, que contenga el número de salarios leídos, y luego puede usar esta variable para calcular el promedio.

double addedSalary = scanFile.nextDouble();
            double sumofSalary = 0.0;
            int count = 0;
            while(scanFile.hasNextDouble()) {
                count ++;
                sumofSalary += addedSalary;
                addedSalary++; }
            double average = sumofSalary/ count;

            System.out.println("Total salary is: " + addedSalary);
0
krb 26 oct. 2017 a las 19:19