Ahoj, uz se zase beru s jednim programem.
Tentokrat mam za ukol napsat program, ktery cele cislo premeni do cisla rimskeho.
Cislo se zada jako hodnota jedne promenne.
1) Muj program: bohuzel nefunguje, nevim jestli jsem pouzila spravnou metodu tj. String replace.
public class RimskeCislo {
public static void main(String[] args) {
int cislo = 1976;
int index;
String rimske = "";
String stringCislo = "" + cislo;
String text[] = {"M", "CM", "LXX", "VI"};
public String replaceAll(String stringCislo ,String text[]){
return new String ("Rismke cislo: " + String text[]);
}
System.out.println("Cele cislo: " + cislo);
System.out.println(text[index]);
}
}
Predem dekuji za rady.
Dagi
Fórum › Java
String replace
To Dagi : Nevím jestli jsi to chtěla řešit obecně nebo pro tento konkrétní případ, tak jsem to vyřešil obecně .. :)
public class Main {
/**
* Pro cisla 9xx, 9x, 9 podle aktualne zpracovavaneho radu
* x nahrazuje jakekoliv cislo 0-9
*/
private static String doplnekSudy(int rad) {
switch (rad) {
case 3:
return "CM";
case 2:
return "XC";
case 1:
return "IX";
default:
throw new AssertionError("Nemelo by nastat");
}
}
/**
* Pro cisla 4xx, 4x, 4 podle aktualne zpracovavaneho radu
*/
private static String doplnekLichy(int rad) {
switch (rad) {
case 3:
return "CD";
case 2:
return "XL";
case 1:
return "IV";
default:
throw new AssertionError("Nemelo by nastat");
}
}
/**
* Pro cisla xxxx, 3xx, 3x
*/
private static String znakSudy(int rad) {
switch (rad) {
case 3:
return "M";
case 2:
return "C";
case 1:
return "X";
default:
throw new AssertionError("Nemelo by nastat");
}
}
private static String znakLichy(int rad) {
switch (rad) {
case 3:
return "D";
case 2:
return "L";
case 1:
return "V";
default:
throw new AssertionError("Nemelo by nastat");
}
}
public static String prevestNaRimske(int cislo) {
String result = "";
for (int rad = 3; rad > 0; rad--) {
// Nejprve spocitame rad ktery budem prevadet
int limita = (int) Math.pow(10.0, (double) rad);
// napred odecteme nasobky 10
while (cislo > limita) {
result += znakSudy(rad);
cislo -= limita;
}
// pak osetrime pripady 9xx, 9x a 9
if (cislo > (limita - limita / 10)) {
result += doplnekSudy(rad);
cislo -= limita - limita / 10;
}
// 5xx, 5x, 5
while (cislo > (limita / 2)) {
result += znakLichy(rad);
cislo -= limita / 2;
}
// 4xx, 4x, 4
if (cislo > (limita / 2 - limita / 20)) {
result += doplnekLichy(rad);
cislo -= limita / 2 - limita / 20;
}
}
// nakonec pricteme jednicky
while (cislo > 0) {
result += "I";
cislo--;
}
return result;
}
public static void main(String[] args) {
int cislo = 213;// -> CCXIII
System.out.println(prevestNaRimske(cislo));
}
}
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 11 hostů
Podobná vlákna
C++ string replace — založil Maxiterit
Js replace — založil netman92
C++, PCRE a replace — založil Heart Breaker
Replace Text on web — založil Frees
JS problem content replace — založil Jirka
Moderátoři diskuze