Patrick, seguo il tuo consiglio! Sono sicuro che, anche se il programma funziona. troverete molti "errori", e anche modi per risparmiare memoria (ma per il momento questo non è un problema).
codice:
/**
* @(#)DecRom.java
* V.P.
* @version 1.3 2012/11/1
*/
import java.io.*;
import javax.swing.*;
public class DecRom
{
public static void main(String[] args)
{
int N=0, v, n=0;
String R="";
InputStreamReader In = new InputStreamReader (System.in);
BufferedReader Tastiera = new BufferedReader (In);
try
{
JOptionPane.showMessageDialog (null, "Immettere, nella finestra successiva, uno dei seguenti valori: \n '0' per iniziare il programma, \n"+
" '1' per avere informazioni sull' uso, \n '2' per i crediti.",
"Info", JOptionPane.INFORMATION_MESSAGE);
v=Integer.parseInt (JOptionPane.showInputDialog("Inserire il valore per andare alla relativa sezione."));
if (v>2)
{
JOptionPane.showMessageDialog (null,"Errore! Inserire un valore compreso tra '0' e '2' per andare alle relative sezioni. \n Riavviare il programma! \n Grazie!",
"ERRORE!", JOptionPane.ERROR_MESSAGE);
}
else if (v==1)
{
JOptionPane.showMessageDialog (null, "Il programma converte numeri dal sistema di numerazione decimale al sistema romano. \n" +
"Inserire, quando richiesto, il valore del numero da convertire.");
JOptionPane.showMessageDialog (null, "ATTENZIONE! Il programma può convertire solo i numeri INTERI compresi tra 0 e 3999!", "ATTENZIONE!", JOptionPane.WARNING_MESSAGE);
JOptionPane.showMessageDialog (null, "Riavviare il programma per proseguire. \n Grazie!");
}
else if (v==2)
{
JOptionPane.showMessageDialog (null, "Convertitore Decimale/Romano. \n Autore: Valerio Pitorri \n"+
"Versione 1.3 \n 3/11/12", "Dettagli", JOptionPane.PLAIN_MESSAGE);
JOptionPane.showMessageDialog (null, "Riavviare il programma per continuare. \n Grazie!", "Info", JOptionPane.INFORMATION_MESSAGE);
}
else if (v==0)
{
N=Integer.parseInt (JOptionPane.showInputDialog(null, "Inserire il numero da convertire: ", "Inserisci il valore", JOptionPane.PLAIN_MESSAGE));
if (N>3999)
JOptionPane.showMessageDialog (null, "Errore! Il numero deve essere compreso tra 0 e 3999!", "ERRORE!", JOptionPane.WARNING_MESSAGE);
else
{
n=N;
while (N>=1000)
{
R=R.concat("M");
N=N-1000 ;
}
if (N>=900)
{
R=R.concat("CM");
N=N-900 ;
}
while (N>=500)
{
R=R.concat("D");
N=N-500 ;
}
if (N>=400)
{
R=R.concat("CD");
N=N-400 ;
}
while (N>=100)
{
R=R.concat("C");
N=N-100 ;
}
if (N>=90)
{
R=R.concat("XC");
N=N-90 ;
}
while (N>=50)
{
R=R.concat("L");
N=N-50 ;
}
if (N>=40)
{
R=R.concat("XL");
N=N-40 ;
}
while (N>=10)
{
R=R.concat("X");
N=N-10 ;
}
if (N==9)
{
R=R.concat("IX");
N=N-9 ;
}
while (N>=5)
{
R=R.concat("V");
N=N-5 ;
}
while (N>=1)
{
if (N==4)
{
R=R.concat("IV");
N=N-4 ;
}
else
{
R=R.concat("I");
N=N-1 ;
}
}
}
JOptionPane.showMessageDialog (null, "Il numero inserito ("+n+") equivale a: "+R, "Risultato", JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog (null, "Grazie per aver usato questo convertitore!", "Grazie", JOptionPane.PLAIN_MESSAGE);
}
}
catch (Exception E)
{
JOptionPane.showMessageDialog (null, "Errore nell' immissione! \n Se sono necessari chiarimenti riavviare"+
" il programma e premere '1'. \n Grazie", "ERRORE", JOptionPane.ERROR_MESSAGE);
}
}
}