Hi zusammen,
Ich hab hier ein Programm das Dezimalzahlen in Römische Zahlen umwandelt.
Wie verändere ich es so das als Eingabe ein Integer übergeben wird und kein String?
Mit 0 < n <= 2000.
import java.io.*;
public class RoemischeZahlen {
public static void main(String args[]) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String str; //damit was eingegeben werden kann
while (true) {
str = in.readLine();
if (str==null || str.length()==0) {
break;
} else {
str = str.toUpperCase();
if (isDecimal(str)) { //isDecimal wird aufgerufen
System.out.println("= " + decimal2roman(Integer.parseInt(str)));
} else {
break;
}
}
}
}
private static boolean isDecimal (String str) {
int i;
try {
i = Integer.parseInt(str);
} catch (NumberFormatException e) {
return false;
}
return i > 0; //stellt fest um es sich um eine gültige Dezimalzahl handelt
}
private static String decimal2roman (int src) {
char digits[] = {'I', 'V', 'X', 'L', 'C', 'D', 'M'};
String thousands = "", result = "";
int rang, digit, i;
for (i=src/1000; i>0; i--) {
thousands += "M";
}
src %= 1000;
rang = 0;
while (src > 0) {
digit = src % 10;
src /= 10;
switch (digit) {
case 1:
result = "" + digits[rang] + result;
break;
case 2:
result = "" + digits[rang] + digits[rang] + result;
break;
case 3:
result = "" + digits[rang] + digits[rang] + digits[rang] + result;
break;
case 4:
result = "" + digits[rang] + digits[rang+1] + result;
break;
case 5:
result = "" + digits[rang+1] + result;
break;
case 6:
result = "" + digits[rang+1] + digits[rang] + result;
break;
case 7:
result = "" + digits[rang+1] + digits[rang] + digits[rang] + result;
break;
case 8:
result = "" + digits[rang+1] + digits[rang] + digits[rang] + digits[rang] + result;
break;
case 9:
result = "" + digits[rang] + digits[rang+2] + result;
break;
}
rang += 2;
}
return thousands + result; //wandelt eine Dezimalzahl in eine römische Zahl um
}
}
Ich hab hier ein Programm das Dezimalzahlen in Römische Zahlen umwandelt.
Wie verändere ich es so das als Eingabe ein Integer übergeben wird und kein String?
Mit 0 < n <= 2000.
import java.io.*;
public class RoemischeZahlen {
public static void main(String args[]) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String str; //damit was eingegeben werden kann
while (true) {
str = in.readLine();
if (str==null || str.length()==0) {
break;
} else {
str = str.toUpperCase();
if (isDecimal(str)) { //isDecimal wird aufgerufen
System.out.println("= " + decimal2roman(Integer.parseInt(str)));
} else {
break;
}
}
}
}
private static boolean isDecimal (String str) {
int i;
try {
i = Integer.parseInt(str);
} catch (NumberFormatException e) {
return false;
}
return i > 0; //stellt fest um es sich um eine gültige Dezimalzahl handelt
}
private static String decimal2roman (int src) {
char digits[] = {'I', 'V', 'X', 'L', 'C', 'D', 'M'};
String thousands = "", result = "";
int rang, digit, i;
for (i=src/1000; i>0; i--) {
thousands += "M";
}
src %= 1000;
rang = 0;
while (src > 0) {
digit = src % 10;
src /= 10;
switch (digit) {
case 1:
result = "" + digits[rang] + result;
break;
case 2:
result = "" + digits[rang] + digits[rang] + result;
break;
case 3:
result = "" + digits[rang] + digits[rang] + digits[rang] + result;
break;
case 4:
result = "" + digits[rang] + digits[rang+1] + result;
break;
case 5:
result = "" + digits[rang+1] + result;
break;
case 6:
result = "" + digits[rang+1] + digits[rang] + result;
break;
case 7:
result = "" + digits[rang+1] + digits[rang] + digits[rang] + result;
break;
case 8:
result = "" + digits[rang+1] + digits[rang] + digits[rang] + digits[rang] + result;
break;
case 9:
result = "" + digits[rang] + digits[rang+2] + result;
break;
}
rang += 2;
}
return thousands + result; //wandelt eine Dezimalzahl in eine römische Zahl um
}
}