jueves, 5 de enero de 2012

Java Ejercicio 5 Realiza una clase con un método decimalToRomano que transforme números en formato decimal a números en formato romano

No lo hace bien. ¿Por qué? En próximas entradas, la solución.
//fichero cromano.java
public class cromano {
    protected int n;
    protected String romano;
    /**
     * @param args
     */

   
    public cromano(int numero){
        n=numero;
    }
   
    private String cifraaromano(int valor,char letra){
        String resultado="";
        switch(letra) {
        case 'm': switch (valor) {
            case 0:resultado="";
                  break;
            case 1:resultado="M";
                  break;
            case 2: resultado="MM";
                  break;
            case 3: resultado="MMM";
                  break;
            case 4: resultado="MMMM";
                  break;
            }
            break;
        case 'd': switch (valor) {
            case 0:resultado="";
                  break;
            case 1:resultado="D";
                  break;
            case 2: resultado="DD";
                  break;
            case 3: resultado="DDD";
                  break;
            case 4: resultado="DDDD";
                  break;
            }
            break;
        case 'c': switch (valor) {
            case 0:resultado="";
                  break;
            case 1:resultado="C";
                  break;
            case 2: resultado="CC";
                  break;
            case 3: resultado="CCC";
                  break;
            case 4: resultado="CD";
                  break;
            }
            break;
        case 'l': switch (valor) {
            case 0:resultado="";
                  break;
            case 1:resultado="L";
                  break;
            case 2: resultado="LL";
                  break;
            case 3: resultado="LLL";
                  break;
            case 4: resultado="LLLL";
                  break;
            }
            break;
        case 'x': switch (valor) {
            case 0:resultado="";
                  break;
            case 1:resultado="X";
                  break;
            case 2: resultado="XX";
                  break;
            case 3: resultado="XXX";
                  break;
            case 4: resultado="XL";
                  break;
            }
            break;
        case 'v': switch (valor) {
            case 0:resultado="";
                  break;
            case 1:resultado="V";
                  break;
            case 2: resultado="VV";
                  break;
            case 3: resultado="VVV";
                  break;
            case 4: resultado="VVVV";
                  break;
            }
            break;
        case 'i': switch (valor) {
            case 0:resultado="";
                  break;
            case 1:resultado="I";
                  break;
            case 2: resultado="II";
                  break;
            case 3: resultado="III";
                  break;
            case 4: resultado="IV";
                  break;
            }
            break;
        }
        return(resultado);
    }
   
    public String mostrarRomano(){
        String resultado=new String();
        String rparcial=new String();
        int resto=0;
        int cociente;
        int dividendo=n;
        int nms;
        int nds;
        int ncs;
        int nls;
        int nxs;
        int nvs;
        int nis;
        //do {
           
        //} while (resto>0);
        cociente=dividendo/1000;
        resto=dividendo%1000;
        nms=cociente;
        cociente=resto/500;
        resto=resto%500;
        nds=cociente;
        cociente=resto/100;
        resto=resto%100;
        ncs=cociente;
        cociente=resto/50;
        resto=resto%50;
        nls=cociente;
        cociente=resto/10;
        resto=resto%10;
        nxs=cociente;
        cociente=resto/5;
        resto=resto%5;
        nvs=cociente;
        nis=resto;
        rparcial=this.cifraaromano(nms, 'm');
        resultado=resultado+rparcial;
        rparcial=this.cifraaromano(nds, 'd');
        resultado=resultado+rparcial;
        rparcial=this.cifraaromano(ncs, 'c');
        resultado=resultado+rparcial;
        rparcial=this.cifraaromano(nls, 'l');
        resultado=resultado+rparcial;
        rparcial=this.cifraaromano(nxs, 'x');
        resultado=resultado+rparcial;
        rparcial=this.cifraaromano(nvs, 'v');
        resultado=resultado+rparcial;
        rparcial=this.cifraaromano(nis, 'i');
        resultado=resultado+rparcial;
        System.out.println("nms:"+nms);
        System.out.println("nds:"+nds);
        System.out.println("ncs:"+ncs);
        System.out.println("nls:"+nls);
        System.out.println("nxs:"+nxs);
        System.out.println("nvs:"+nvs);
        System.out.println("nis:"+nis);
        System.out.println("Cociente:"+cociente);
        System.out.println("Resto:"+resto);
       
        return(resultado);
    }

}
//fichero mromano.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class mromano {
   
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int n1;
        String linea;
       
        try {
        BufferedReader is = new BufferedReader (new InputStreamReader(System.in));
        System.out.println("Introduce el número a pasar a romano:");
        linea = is.readLine();
        n1=Integer.parseInt(linea);
        cromano numero=new cromano(n1);
        System.out.println(numero.mostrarRomano());
        } catch (NumberFormatException ex) {
            System.err.println("No es un número válido");
        } catch (IOException e) {
            System.err.println("Error IO no esperado");
        }
    }

}


No hay comentarios:

Publicar un comentario