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();
}
}
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();
}
}
public class Certification1 {
public static void main(String[] args) {
Subvencion.start();
}
}
No comments:
Post a Comment