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
![](img/forum_vlakno_help_vyreseno.png)
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));
}
}
![](img/forum_nove_psp_new.png)
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.
×![](/img/smile/1.gif)
![](/img/smile/2.gif)
![](/img/smile/3.gif)
![](/img/smile/4.gif)
![](/img/smile/5.gif)
![](/img/smile/6.gif)
![](/img/smile/7.gif)
![](/img/smile/8.gif)
![](/img/smile/9.gif)
![](/img/smile/10.gif)
![](/img/smile/11.gif)
![](/img/smile/12.gif)
![](/img/smile/13.gif)
![](/img/smile/14.gif)
![](/img/smile/15.gif)
![](/img/smile/16.gif)
![](/img/smile/17.gif)
![](/img/smile/18.gif)
![](/img/smile/19.gif)
![](/img/smile/20.gif)
![](/img/smile/21.gif)
![](/img/smile/22.gif)
![](/img/smile/23.gif)
![](/img/smile/24.gif)
![](/img/smile/25.gif)
![](/img/smile/26.gif)
![](/img/smile/27.gif)
![](/img/smile/28.gif)
![](/img/smile/29.gif)
![](/img/smile/30.gif)
![](/img/smile/31.gif)
![](/img/smile/1.gif)
![](/img/smile/2.gif)
![](/img/smile/3.gif)
![](/img/smile/4.gif)
![](/img/smile/5.gif)
![](/img/smile/6.gif)
![](/img/smile/7.gif)
![](/img/smile/8.gif)
![](/img/smile/9.gif)
![](/img/smile/10.gif)
![](/img/smile/11.gif)
![](/img/smile/12.gif)
![](/img/smile/13.gif)
![](/img/smile/14.gif)
![](/img/smile/15.gif)
![](/img/smile/16.gif)
![](/img/smile/17.gif)
![](/img/smile/18.gif)
![](/img/smile/19.gif)
![](/img/smile/20.gif)
![](/img/smile/21.gif)
![](/img/smile/22.gif)
![](/img/smile/23.gif)
![](/img/smile/24.gif)
![](/img/smile/25.gif)
![](/img/smile/26.gif)
![](/img/smile/27.gif)
![](/img/smile/28.gif)
![](/img/smile/29.gif)
![](/img/smile/30.gif)
![](/img/smile/31.gif)
![](/img/smile/32.gif)
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 17 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