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");
}
}
}
//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