Monday, July 17, 2017

Ejercicio 10

Problema

Actualmente se encuentra trabajando en EPM y necesita determinar las subvenciones y los sobre-cargo (si aplica) de la cuenta de los servicios. Para ello considere la siguiente liquidación de la subvención (sobre-cargo):

Estrato Económico Subvención / Sobre-Cargo
1 -40%(personas > 3); -30% (otro)
2 -20% (personas > 3>; -15% (otro)
3 -10%
4 10%
5 20%
6 40%

Desarrollar un programa que pregunte por el monto de la factura. Luego el programa debe identificar si es beneficiario o no de un descuento. Finalmente, el programa debe decir el monto total que debe pagar por concepto de servicios públicos, especificando: monto + subvención (sobre-cargo) en su caso.

Observación: Implemente la solución con Nested if y Nested switch . En el Manual de Referencia de Java Ed 9 (capitulo 5), if y switch se consideran: sentencias de control de selección (selection control statement).

Solución

Únicamente se implemente nested switch .

Clase Subvencion

package certification1;

import java.util.Scanner;

public class Subvencion {
    private static double factura;
    private static int extracto, num_personas;
    private static double descuento;
    private static double neto_pagar;
    private static String text; // Discount or not
    static Scanner read = new Scanner(System.in);
    
    private static void read_Data(){
        System.out.printf("%-20s","Digite el valor de su factura: ");
        factura = read.nextDouble();
        System.out.printf("%-20s""A que extracto pertenece: ");
        extracto = read.nextInt();
        System.out.printf("%-20s","Personas que pertenecen al hogar: ");
        num_personas = read.nextInt();
    }
    
    private static void test(){
        switch(extracto){
            case 1:
                text = "Descuento";
                switch(num_personas){
                    case 1:
                    case 2:
                        descuento = -0.3;
                        break;
                    default:
                        descuento = -0.4;
                        break;
                }
                break;
            case 2:
                text = "Descuento";
                switch(num_personas){
                    case 1:
                    case 2:
                        descuento = -0.15;
                        break;
                    default:
                        descuento = -0.2;
                        break;
                }
                break;
            case 3:
                text = "Descuento";
                descuento = -0.1;
                break;
            case 4:
                text = "Recaudo";
                descuento = 0.1;
                break;
            case 5:
                text = "Recaudo";
                descuento = 0.2;
                break;
            case 6:
                text = "Recaudo";
                descuento = 0.4;
                break;
            default:
                System.out.println("Extracto no existe");
                break;
        }
    neto_pagar = factura*(1+descuento);
    }
    
    private static void Msg_final(){
        System.out.printf("%-20s %-10f \n","Valor de la factura original: ", factura);
        System.out.printf("%-20s %20s \n""Qué aplica ? : ", text);
        System.out.printf("%-20s %-20s \n""Descuento / Recaudo aplicado: ", Math.abs((neto_pagar - factura)) );
        System.out.printf("%-20s %10f \n""Total a pagar: ", neto_pagar);
    }
    
    public static void start(){
        read_Data();
        test();
        Msg_final();
    }
}

Método main

package certification1;

public class Certification1 {
    
    public static void main(String[] args) {
        Subvencion.start();
    }
}

No comments:

Post a Comment

Earn free bitcoin