Análisis Estadístico de Compañías Telefónicas en Java

Design and engineering4.51 KB

Análisis Estadístico de Telefonía Móvil en Java

El siguiente programa implementa la lectura de datos mediante consola para clasificar usuarios según su compañía telefónica (Movistar, Orange u Otros) y su modalidad de pago (Tarjeta o Contrato), calculando la cuota mayoritaria al finalizar el ingreso de datos.

Código Fuente del Ejercicio

package ejercicio24;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejercicio24 {

    public static void main(String[] args) throws IOException {
        String miTipo, miCompañia;
        int contadorTotal = 0, totMov = 0, totOr = 0, totOt = 0;
        int movTar = 0, movCon = 0, oraTar = 0, oraCon = 0, otTar = 0, otCon = 0;
        float porGanador = 0;

        Ejercicio24 objeto = new Ejercicio24();
        miCompañia = objeto.pedirCompañia();

        while (!miCompañia.equalsIgnoreCase("*")) {
            miTipo = objeto.pedirTipo();
            contadorTotal++;

            if (miTipo.equalsIgnoreCase("Tarjeta")) {
                if (miCompañia.equalsIgnoreCase("Movistar")) {
                    totMov++;
                    movTar++;
                } else if (miCompañia.equalsIgnoreCase("Orange")) {
                    totOr++;
                    oraTar++;
                } else {
                    totOt++;
                    otTar++;
                }
            } else {
                if (miCompañia.equalsIgnoreCase("Movistar")) {
                    totMov++;
                    movCon++;
                } else if (miCompañia.equalsIgnoreCase("Orange")) {
                    totOr++;
                    oraCon++;
                } else {
                    totOt++;
                    otCon++;
                }
            }
            miCompañia = objeto.pedirCompañia();
        }

        if (contadorTotal == 0) {
            System.out.println("No se han introducido datos.");
        } else {
            totMov = movTar + movCon;
            totOr = oraTar + oraCon;
            totOt = otTar + otCon;

            if (totMov > totOr && totMov > totOt) {
                System.out.println("Movistar gana");
                porGanador = (float) totMov / contadorTotal * 100;
                System.out.println("Con un " + porGanador + "%");
            } else if (totOr > totMov && totOr > totOt) {
                System.out.println("Orange gana");
                porGanador = (float) totOr / contadorTotal * 100;
                System.out.println("Con un " + porGanador + "%");
            } else if (totOt > totMov && totOt > totOr) {
                System.out.println("Otros gana");
                porGanador = (float) totOt / contadorTotal * 100;
                System.out.println("Con un " + porGanador + "%");
            } else {
                System.out.println("Son iguales");
            }
        } // Cierre de bloques condicionales anidados (4 llaves más)
    }

    public String pedirTipo() throws IOException {
        InputStreamReader flujo = new InputStreamReader(System.in);
        BufferedReader teclado = new BufferedReader(flujo);
        String tipo;

        System.out.print("Tarjeta o Contrato: ");
        tipo = teclado.readLine();
        while (tipo.compareToIgnoreCase("Tarjeta") != 0 && tipo.compareToIgnoreCase("Contrato") != 0) {
            System.out.print("Error, vuelve a introducir el tipo: ");
            tipo = teclado.readLine();
        }
        return tipo;
    }

    public String pedirCompañia() throws IOException {
        InputStreamReader flujo = new InputStreamReader(System.in);
        BufferedReader teclado = new BufferedReader(flujo);
        String compañia;

        System.out.print("Introduce Compañía: ");
        compañia = teclado.readLine();
        return compañia;
    }
}

Estructura del Algoritmo

  • Entrada de datos: Se utiliza BufferedReader e InputStreamReader para procesar la entrada estándar de teclado.
  • Bucle de control: La captura finaliza al ingresar el carácter centinela *.
  • Validación: El método pedirTipo() valida estrictamente que el valor sea Tarjeta o Contrato.
  • Cálculo final: Determina la operadora con mayor volumen y muestra el porcentaje representativo sobre el total acumulado.

Download

PDF Word HTML