Ejercicios Capitulo 7 bloque 4
This commit is contained in:
37
src/capitulo07/bloque04/AvisosCalculo.java
Normal file
37
src/capitulo07/bloque04/AvisosCalculo.java
Normal file
@@ -0,0 +1,37 @@
|
||||
package capitulo07.bloque04;
|
||||
|
||||
import capitulo07.bloque04.listener.Calculadora;
|
||||
import capitulo07.bloque04.listener.OperacionEvent;
|
||||
import capitulo07.bloque04.listener.OperacionesListener;
|
||||
|
||||
public class AvisosCalculo implements OperacionesListener {
|
||||
|
||||
public AvisosCalculo() {
|
||||
Calculadora.addOperationsListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sumaMayor1000(OperacionEvent event) {
|
||||
System.out.println("La suma ha sobrepasado 1000 con el valor " + event.getResultado());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void multiplicacionMayor1000(OperacionEvent event) {
|
||||
System.out.println("La multiplicación ha sobrepasado 1000 con el valor " + event.getResultado());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void restaNegativa(OperacionEvent event) {
|
||||
System.out.println("El resultado de la resta es negativo: " + event.getResultado());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void divisor0(OperacionEvent event) {
|
||||
System.out.println("No es posible dividir por 0");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void raizNegativa(OperacionEvent event) {
|
||||
System.out.println("No se puede calcular la raiz cuadrada de un número negativo");
|
||||
}
|
||||
}
|
||||
57
src/capitulo07/bloque04/Main.java
Normal file
57
src/capitulo07/bloque04/Main.java
Normal file
@@ -0,0 +1,57 @@
|
||||
package capitulo07.bloque04;
|
||||
|
||||
|
||||
import capitulo07.bloque04.listener.Calculadora;
|
||||
|
||||
import static capitulo04.utils.Utils.solicitarFloatScannerInline;
|
||||
import static capitulo04.utils.Utils.solicitarIntScannerInline;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
int opcion = 0;
|
||||
new AvisosCalculo();
|
||||
|
||||
do {
|
||||
System.out.println("Calculadora (0 para salir):" +
|
||||
"\n 1 - Suma" +
|
||||
"\n 2 - Resta" +
|
||||
"\n 3 - Multiplicación" +
|
||||
"\n 4 - División" +
|
||||
"\n 5 - Raiz Cuadrada");
|
||||
opcion = solicitarIntScannerInline("> ");
|
||||
|
||||
float num1 = 0;
|
||||
float num2 = 0;
|
||||
|
||||
switch (opcion) {
|
||||
case 1:
|
||||
num1 = solicitarFloatScannerInline("Introduzca el primer sumando: ");
|
||||
num2 = solicitarFloatScannerInline("Introduzca el segundo sumando: ");
|
||||
System.out.println("Resultado de la suma: " + Calculadora.suma(num1, num2));
|
||||
break;
|
||||
case 2:
|
||||
num1 = solicitarFloatScannerInline("Introduzca el minuendo: ");
|
||||
num2 = solicitarFloatScannerInline("Introduzca el sustraendo: ");
|
||||
System.out.println("Resultado de la resta: " + Calculadora.resta(num1,num2));
|
||||
break;
|
||||
case 3:
|
||||
num1 = solicitarFloatScannerInline("Introduzca el primer factor: ");
|
||||
num2 = solicitarFloatScannerInline("Introduzca el segundo factor: ");
|
||||
System.out.println("Resultado de la multiplicación: " + Calculadora.multiplica(num1,num2));
|
||||
break;
|
||||
case 4:
|
||||
num1 = solicitarFloatScannerInline("Introduzca el dividendo: ");
|
||||
num2 = solicitarFloatScannerInline("Introduzca el divisor: ");
|
||||
System.out.println("Resultado de la división: " + Calculadora.divide(num1, num2));
|
||||
break;
|
||||
case 5:
|
||||
num1 = solicitarFloatScannerInline("Introduzca el radicando: ");
|
||||
System.out.println("Resultado de la raiz cuadrada: " + Calculadora.hazRaizCuadrada(num1));
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
} while (opcion != 0);
|
||||
|
||||
}
|
||||
}
|
||||
87
src/capitulo07/bloque04/listener/Calculadora.java
Normal file
87
src/capitulo07/bloque04/listener/Calculadora.java
Normal file
@@ -0,0 +1,87 @@
|
||||
package capitulo07.bloque04.listener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Calculadora {
|
||||
static List<OperacionesListener> listeners = new ArrayList<OperacionesListener>();
|
||||
|
||||
public static void addOperationsListener(OperacionesListener l) {
|
||||
listeners.add(l);
|
||||
}
|
||||
public static void removeOperationsListener(OperacionesListener l) {
|
||||
listeners.remove(l);
|
||||
}
|
||||
|
||||
private static void fireSumaMayor1000(float resultado) {
|
||||
for (OperacionesListener opl : listeners) {
|
||||
opl.sumaMayor1000(new OperacionEvent(resultado));
|
||||
}
|
||||
}
|
||||
|
||||
private static void fireMultiplicacionMayor1000(float resultado) {
|
||||
for (OperacionesListener opl : listeners) {
|
||||
opl.multiplicacionMayor1000(new OperacionEvent(resultado));
|
||||
}
|
||||
}
|
||||
|
||||
private static void fireRestaNegativa(float resultado) {
|
||||
for (OperacionesListener opl : listeners) {
|
||||
opl.restaNegativa(new OperacionEvent(resultado));
|
||||
}
|
||||
}
|
||||
|
||||
private static void fireDivision0(float resultado) {
|
||||
for (OperacionesListener opl : listeners) {
|
||||
opl.divisor0(new OperacionEvent(resultado));
|
||||
}
|
||||
}
|
||||
|
||||
private static void fireRaizNegativa(float resultado) {
|
||||
for (OperacionesListener opl : listeners) {
|
||||
opl.raizNegativa(new OperacionEvent(resultado));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static float suma(float num1, float num2) {
|
||||
float resultado = num1 + num2;
|
||||
if (resultado > 1000) fireSumaMayor1000(resultado);
|
||||
return resultado;
|
||||
}
|
||||
|
||||
public static float multiplica(float num1, float num2) {
|
||||
float resultado = num1 * num2;
|
||||
if (resultado < 1000) fireMultiplicacionMayor1000(resultado);
|
||||
return resultado;
|
||||
}
|
||||
|
||||
public static float resta(float num1, float num2) {
|
||||
float resultado = num1 - num2;
|
||||
if (resultado < 0) fireRestaNegativa(resultado);
|
||||
return resultado;
|
||||
}
|
||||
|
||||
public static float divide(float num1, float num2) {
|
||||
if (num2 == 0) {
|
||||
fireDivision0(num2);
|
||||
return num2;
|
||||
} else {
|
||||
return num1 / num2;
|
||||
}
|
||||
}
|
||||
|
||||
public static float hazRaizCuadrada(float num) {
|
||||
if (num < 0) {
|
||||
fireRaizNegativa(num);
|
||||
return num;
|
||||
} else {
|
||||
return (float) Math.sqrt(num);
|
||||
}
|
||||
}
|
||||
}
|
||||
24
src/capitulo07/bloque04/listener/OperacionEvent.java
Normal file
24
src/capitulo07/bloque04/listener/OperacionEvent.java
Normal file
@@ -0,0 +1,24 @@
|
||||
package capitulo07.bloque04.listener;
|
||||
|
||||
public class OperacionEvent {
|
||||
private float resultado;
|
||||
|
||||
public OperacionEvent(float resultado) {
|
||||
|
||||
this.resultado = resultado;
|
||||
}
|
||||
public float getResultado() {
|
||||
return resultado;
|
||||
}
|
||||
|
||||
public void setResultado(float resultado) {
|
||||
this.resultado = resultado;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "OperacionEvent{" +
|
||||
"resultado=" + resultado +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
14
src/capitulo07/bloque04/listener/OperacionesListener.java
Normal file
14
src/capitulo07/bloque04/listener/OperacionesListener.java
Normal file
@@ -0,0 +1,14 @@
|
||||
package capitulo07.bloque04.listener;
|
||||
|
||||
public interface OperacionesListener {
|
||||
|
||||
public void sumaMayor1000(OperacionEvent event);
|
||||
|
||||
public void multiplicacionMayor1000(OperacionEvent event);
|
||||
|
||||
public void restaNegativa(OperacionEvent event);
|
||||
|
||||
public void divisor0(OperacionEvent event);
|
||||
|
||||
public void raizNegativa(OperacionEvent event);
|
||||
}
|
||||
Reference in New Issue
Block a user