Statt String Integer als Input

PPhilipp

Grünschnabel
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
}



}
 
Du wandelst doch den String gleich in einen int Wert um .. Wozu willst du direkt einen int Wert einlesen ?! Die entsprechende Abfrage (0<n<2000) kannst du in den try - catch Block setzen und eine entsprechende Exception werfen ..
 
Zurück