Tässä ohjelmassa muutetaan roomalainen numero arabialaiseksi. Tästä ohjelmasta löytyy kaikki roomalaiset numerot.
import java.util.Scanner; public class Roomalaiset_arabialaiseksi { public static void main(String[] args){ Scanner syote = new Scanner(System.in); String r_numero = ""; int luku = 0; boolean onko = false; System.out.println("Anna roomalainen numero."); r_numero = syote.next(); //Muutetaan roomalainen numero arabialaiseksi numeroksi. //Ensin katsotaan, onko väheneviä osia esim. IV = 5-1=4 for (int x = 0; x < r_numero.length(); x++){ //Katsotaan, onko väheneviä osia. //Katsotaan x+1:lla voiko väheneviä osia olla. //Jos väheneviä osia ei ole, varmistetaan ettei lukua lasketa kahteen kertaan. onko = false; //Oletetaan aluksi ettei ole väheneviä osia. if (x + 1 < r_numero.length()){ if (r_numero.charAt(x) == 'C' && r_numero.charAt(x+1) == 'M'){ onko = true; luku += 900; x += 1; } else if (r_numero.charAt(x) == 'C' && r_numero.charAt(x+1) == 'D'){ onko = true; luku += 400; x += 1; } else if (r_numero.charAt(x) == 'X' && r_numero.charAt(x+1) == 'C'){ onko = true; luku += 90; x += 1; } else if (r_numero.charAt(x) == 'X' && r_numero.charAt(x+1) == 'L'){ onko = true; luku += 40; x += 1; } else if (r_numero.charAt(x) == 'I' && r_numero.charAt(x+1) == 'X'){ onko = true; luku += 9; x += 1; } else if (r_numero.charAt(x) == 'I' && r_numero.charAt(x+1) == 'V'){ onko = true; luku += 4; x += 1; } } if (onko == false){ //Luvussa ei ole väheneviä osia. if (r_numero.charAt(x) == 'M'){ luku += 1000; } else if (r_numero.charAt(x) == 'D'){ luku += 500; } else if (r_numero.charAt(x) == 'C'){ luku += 100; } else if (r_numero.charAt(x) == 'L'){ luku += 50; } else if (r_numero.charAt(x) == 'X'){ luku += 10; } else if (r_numero.charAt(x) == 'V'){ luku += 5; } else if (r_numero.charAt(x) == 'I'){ luku += 1; } } } //Näytetään tulos. System.out.println(luku); } }
Tämän voisi kirjoittaa lyhyemmin ja selkeämmin vaikkapa näin:
int luku = 0 String r_numero = syote.next() + " " for (int x = 0; x < r_numero.length() - 1; x++) { switch (numero.substring(x, x + 2) { case "CM": luku -= 100; break; case "CD": luku -= 100; break; case "XC": luku -= 10; break; case "XL": luku -= 10; break; case "IX": luku -= 1; break; case "IV": luku -= 1; break; default: switch (numero.charAt(x) { case 'M': luku += 1000; break; case 'D': luku += 500; break; case 'C': luku += 100; break; case 'L': luku += 50; break; case 'X': luku += 10; break; case 'V': luku += 5; break; case 'I': luku += 1; break; default: System.out.println("Virheellinen merkki") } } } System.out.println(luku)
Aihe on jo aika vanha, joten et voi enää vastata siihen.