Código Java – Simplificar Fracción

// Codificado por: Beastieux
import javax.swing.*;

public class SyGFraccion {

    void mostrarFraccionSimplificada(int numerador, int denominador) {
        int div = 0;
        if ((numerador % denominador) == 0) {
            div = numerador / denominador;
            JOptionPane.showMessageDialog(null, "" + div);
        } else if ((denominador % numerador) == 0) {
            div = denominador / numerador;
            JOptionPane.showMessageDialog(null, "1/" + div);
        } else
            JOptionPane.showMessageDialog(null, "" + numerador + "/" + denominador);
    }

    void ingresaFraccion() {
        int numerador = 0, denominador = 0;
        String cadena;
        cadena = JOptionPane.showInputDialog("Ingrese Numerador : ");
        numerador = Integer.parseInt(cadena);
        cadena = JOptionPane.showInputDialog("Ingrese Denominador : ");
        denominador = Integer.parseInt(cadena);
        mostrarFraccionSimplificada(numerador, denominador);
    }

    public static void main(String[] args) {
        String cadena;
        int opcion = 0;
        SyGFraccion fraccional = new SyGFraccion();
        do {
            cadena = JOptionPane.showInputDialog("0. Salir.  -----   [Otro] Continuar");
            opcion = Integer.parseInt(cadena);
            if (opcion == 0)
                System.exit(0);
            else
                fraccional.ingresaFraccion();

        } while (opcion != 0);
    }
}

Pueder ir al artículo principal:

Códigos Sencillos hechos en Java

9 thoughts on “Código Java – Simplificar Fracción

  1. El de abajo lo copié mal :/

    package basicos;

    public class Simplifica {

    public static void main(String[] args) {
    System.out.println(simplificarNumero(«-5/-125»));
    System.out.println(simplificarNumero(«8/6»));
    System.out.println(simplificarNumero(«24/108»));
    System.out.println(simplificarNumero(«-1500/1520»));
    }

    //Este método no admite los números decimales, pero eso es muy sencillo de hacerlo.
    public static String simplificarNumero(String numero) {

    String[] split = numero.split(«/»);
    if(split!=null) {
    if(split.length==2 && !split[0].isEmpty() && !split[1].isEmpty()) {
    if(validarNumeroEntero(split[0])&&
    validarNumeroEntero(split[1])){
    int numerador = Integer.parseInt(split[0]);
    int denominador = Integer.parseInt(split[1]);

    if(denominador==0) {
    return «División por 0»;
    }else {
    for(int i=2;i<=Math.abs(Math.min(numerador,denominador));i++) {
    while(numerador%i==0 && denominador%i==0) {
    numerador /= i;
    denominador /= i;
    }
    }
    }

    return numerador+"/"+denominador+" = "+String.format("%.2f",(Double.parseDouble(""+numerador)/denominador));
    }
    }
    }
    return "Introduzca algo similar a: 155/5";
    }

    public static boolean validarNumeroEntero(String numero) {
    //int count = 0;
    if (numero != null) {
    // validamos si tiene un –
    int der = numero.indexOf('-');// busca desde la izquierda
    int iz = numero.lastIndexOf('-');// busca desde la derecha
    if (der <= 0 && iz <= 0) {
    for (int i = 0; i < numero.length(); i++) {
    if (numero.charAt(i) == '-')continue;
    if (!Character.isDigit(numero.charAt(i)))return false;
    }
    return true;
    }
    }
    return false;
    }

    }

  2. package basicos;

    public class Simplifica {

    public static void main(String[] args) {
    System.out.println(simplificarNumero(«-5/-125»));
    System.out.println(simplificarNumero(«8/6»));
    System.out.println(simplificarNumero(«24/108»));
    System.out.println(simplificarNumero(«-1500/1520»));
    }

    //Este método no admite los números decimales, pero eso es muy sencillo de hacerlo.
    public static String simplificarNumero(String numero) {

    String[] split = numero.split(«/»);
    if(split!=null) {
    if(split.length==2 && !split[0].isEmpty() && !split[1].isEmpty()) {
    if(validarNumeroEntero(split[0])&&
    validarNumeroEntero(split[1])){
    int numerador = Integer.parseInt(split[0]);
    int denominador = Integer.parseInt(split[1]);

    if(denominador==0) {
    return «División por 0»;
    }else {
    for(int i=2;i<=Math.abs(Math.min(numerador,denominador));i++) {
    while(numerador%i==0 && denominador%i==0) {
    numerador /= i;
    denominador /= i;
    }
    }
    }

    return numerador+"/"+denominador+" = "+String.format("%.2f",(Double.parseDouble(""+numerador)/denominador));
    }
    }
    }
    return "Introduzca algo similar a: 155/5";
    }

    public static boolean validarNumeroEntero(String numero) {
    //int count = 0;
    if (numero != null) {
    // validamos si tiene un –
    int der = numero.indexOf('-');// busca desde la izquierda
    int iz = numero.lastIndexOf('-');// busca desde la derecha
    if (der <= 0 && iz <= 0) {
    for (int i = 0; i < numero.length(); i++) {
    if (numero.charAt(i) == '-')continue;
    if (!Character.isDigit(numero.charAt(i)))return false;
    }
    return true;
    }
    }
    return false;
    }

    }

    public static void main(String[] args) {
    System.out.println(simplificarNumero("-5/-125"));
    System.out.println(simplificarNumero("8/6"));
    System.out.println(simplificarNumero("24/108"));
    System.out.println(simplificarNumero("-1500/1520"));
    }

    //Este método no admite los números decimales, pero eso es muy sencillo de hacerlo.
    public static String simplificarNumero(String numero) {

    String[] split = numero.split("/");
    if(split!=null) {
    if(split.length==2 && !split[0].isEmpty() && !split[1].isEmpty()) {
    if(validarNumeroEntero(split[0])&&
    validarNumeroEntero(split[1])){
    int numerador = Integer.parseInt(split[0]);
    int denominador = Integer.parseInt(split[1]);

    if(denominador==0) {
    return "División por 0";
    }else {
    for(int i=2;i<=Math.abs(Math.min(numerador,denominador));i++) {
    while(numerador%i==0 && denominador%i==0) {
    numerador /= i;
    denominador /= i;
    }
    }
    }

    return numerador+"/"+denominador+" = "+String.format("%.2f",(Double.parseDouble(""+numerador)/denominador));
    }
    }
    }
    return "Introduzca algo similar a: 155/5";
    }

    public static boolean validarNumeroEntero(String numero) {
    //int count = 0;
    if (numero != null) {
    // validamos si tiene un –
    int der = numero.indexOf('-');// busca desde la izquierda
    int iz = numero.lastIndexOf('-');// busca desde la derecha
    if (der <= 0 && iz <= 0) {
    for (int i = 0; i < numero.length(); i++) {
    if (numero.charAt(i) == '-')continue;
    if (!Character.isDigit(numero.charAt(i)))return false;
    }
    return true;
    }
    }
    return false;
    }

    }

    1. Mi solución:
      package basicos;

      public class Simplifica {

      public static void main(String[] args) {

      System.out.println(simplificarNumero(«5/2»));
      System.out.println(simplificarNumero(«8/6»));
      System.out.println(simplificarNumero(«24/108»));
      System.out.println(simplificarNumero(«1500/1520»));
      }

      //Este método no admite los números decimales, pero eso es muy sencillo de hacerlo.
      public static String simplificarNumero(String numero) {

      String[] split = numero.split(«/»);
      if(split!=null) {
      if(split.length==2) {
      if(validarNumeroEntero(split[0])&&
      validarNumeroEntero(split[1])){
      int numerador = Integer.parseInt(split[0]);
      int denominador = Integer.parseInt(split[1]);

      if(denominador==0) {
      return «División por 0»;
      }else {
      for(int i=2;i<=Math.abs(Math.min(numerador,denominador));i++) {
      while(numerador%i==0 && denominador%i==0) {
      numerador /= i;
      denominador /= i;
      }
      }
      }

      return numerador+"/"+denominador+" = "+String.format("%.2f",(Double.parseDouble(""+numerador)/denominador));
      }
      }
      }
      return "Introduzca algo similar a: 155/5";
      }

      public static boolean validarNumeroEntero(String numero) {
      //int count = 0;
      if (numero != null) {
      // validamos si tiene un –
      int der = numero.indexOf('-');// busca desde la izquierda
      int iz = numero.lastIndexOf('-');// busca desde la derecha
      if (der <= 0 && iz <= 0) {
      for (int i = 0; i < numero.length(); i++) {
      if (numero.charAt(i) == '-')continue;
      if (!Character.isDigit(numero.charAt(i)))return false;
      }
      return true;
      }
      }
      return false;
      }

      }

Deja un comentario