Skip to content
This repository has been archived by the owner on Aug 9, 2024. It is now read-only.

Commit

Permalink
mtd 1, 2 y 4
Browse files Browse the repository at this point in the history
  • Loading branch information
Laifsyn committed Apr 7, 2024
1 parent 3fda22b commit 8012fd1
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 8 deletions.
96 changes: 88 additions & 8 deletions src/main/java/com/utp/clsHerramientas/pry1/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,65 @@
import java.util.ArrayList;
import java.util.Optional;

import com.utp.utils.Cli;
import com.utp.utils.Utils;

// · Opción 1: Método llamado mtdListaNumeros, que determina la media de una lista indefinida de números positivos, terminados con un número negativo. La entrada y salidas deben realizarse dentro del método principal.
public class App {
public static void main(String[] args) {
ListaDeNumeros lista = new ListaDeNumeros();
Methods methods = new Methods();
System.out.println("La media de los números ingresados es: " + methods.mtdListaNumeros(lista));

for (int num = 80; num < 180; num++) {

methods.mtdFactorial(String.format("%d", num));
while (true) {
String entrada = Cli.read_non_empty_input("Ingrese una opción,");
if (entrada.equals("exit")) {
System.out.println("Saliendo...");
System.exit(0);
}
var maybe_option = Utils.try_parse_int(entrada);
if (maybe_option.isEmpty()) {
System.out.println("Opción no es un número convertible.");
continue;
}
var option = maybe_option.get();
System.out.println("Opción seleccionada: " + option);
switch (option) {
default -> System.out.println("Opción no válida.");
case 1 -> {
System.out.println("\nIngrese números positivos, para terminar ingrese un número negativo.");
ListaDeNumeros lista = new ListaDeNumeros();
while (true) {
String input = Cli.read_non_empty_input("Ingrese un número,");
var resultado = lista.push_str(input);
if (resultado.isEmpty()) {
System.out.println("El número no es válido.");
continue;
}
if (resultado.get() < 0) {
break;
}
}
var resultado = methods.mtdListaNumeros(lista);
if (resultado.isEmpty()) {
System.out.println("No se ingresaron números.");
continue;
}
System.out.println("La media de los números ingresados es: " + resultado.get());
}
case 2 -> {
String entrada2 = Cli.read_non_empty_input("Ingrese un número para obtener su factorial,");
methods.mtdFactorial(entrada2);
}
case 3 -> methods.mtdMediaValor();
case 4 -> {
System.out.println("\nIngrese números, para terminar ingrese un número entre 1 y 5.");
while (true) {
if (ControlFlow.BREAK == methods.mtdNumeros()) {
break;
}
}
}
}
}

}
}

Expand All @@ -28,7 +74,7 @@ ArrayList<Integer> getLista() {
}

Optional<Integer> push_str(String input) {
Optional<Integer> num = Optional.ofNullable(Integer.parseInt(input));
Optional<Integer> num = Utils.try_parse_int(input);
if (num.isPresent()) {
Lista.add(num.get());
}
Expand All @@ -37,6 +83,9 @@ Optional<Integer> push_str(String input) {
}

class Methods {
// • Opción 1: Método llamado mtdListaNumeros, que determina la media de una
// lista indefinida de números positivos, terminados con un número negativo. La
// entrada y salidas deben realizarse dentro del método principal.
public Optional<Double> mtdListaNumeros(ListaDeNumeros lista) {
if (lista.getLista().isEmpty()) {
return Optional.empty();
Expand All @@ -52,7 +101,7 @@ public Optional<Double> mtdListaNumeros(ListaDeNumeros lista) {
// de un número leído en el método principal. La impresión del resultado se
// realiza en el método mtdFactorial.
public void mtdFactorial(String string_num) {
var maybe_num = Optional.ofNullable(Integer.parseInt(string_num));
var maybe_num = Utils.try_parse_int(string_num);
if (maybe_num.isEmpty()) {
System.out.println("El número no es válido.");
return;
Expand All @@ -69,4 +118,35 @@ public void mtdFactorial(String string_num) {
System.out.println("El factorial de " + num + " es: " + Utils.pretty_number(factorial));
}

// • Opción 3: Método llamado mtdMediaValor que dispone de un cierto número de
// parejas de valores de los cuales el último es el 999 y se desea determinar e
// imprimir el valor máximo de las medias correspondientes a parejas de valores
// sucesivos. La entrada y de datos y cálculos se debe realizar en el método
// mtdMediaValor y la impresión en el método principal.
public void mtdMediaValor() {

}

// • Opción 4: Método llamado mtdNumeros que lea e imprima sucesivamente números
// desde el teclado hasta que se introduzca un número comprendido entre 1 y 5.
// La entrada y salidas deben realizarse dentro del método mtdNumeros.
public ControlFlow mtdNumeros() {
var user_input = Cli.read_non_empty_input("Ingrese un número, ");
var maybe_num = Utils.try_parse_int(user_input);
if (maybe_num.isEmpty()) {
System.out.printf("\"%s\" no es número no es válido.\n", user_input);
return ControlFlow.CONTINUE;
}
var num = maybe_num.get();
if (num >= 1 && num <= 5) {
System.out.printf("\"%d\" SI está comprendido entre 1 y 5.\n", num);
return ControlFlow.BREAK;
}
System.out.printf("\"%d\" NO está comprendido entre 1 y 5.\n", num);
return ControlFlow.CONTINUE;
}
}

enum ControlFlow {
CONTINUE, BREAK
}
9 changes: 9 additions & 0 deletions src/main/java/com/utp/utils/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,19 @@
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Optional;

public class Utils {
final static BigDecimal thousand = BigDecimal.valueOf(1000);

public static Optional<Integer> try_parse_int(String str) {
try {
return Optional.of(Integer.parseInt(str));
} catch (Exception e) {
return Optional.empty();
}
}

public static String pretty_number(BigDecimal number) {
var fraction = number.remainder(BigDecimal.ONE);
var integer = number.subtract(fraction);
Expand Down

0 comments on commit 8012fd1

Please sign in to comment.