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.