Grazie mille, sono riuscito a fare funzionare il programma !
Lo scopo era di simulare l'inserimento di alcuni dati per un ipotetico rimborso spese, visualizzandoli tutti insieme alla fine in una JTextArea
codice:
import java.text.NumberFormat;
import java.util.Locale;
import javax.swing.JTextArea;
import javax.swing.JOptionPane;
public class CalcoloRimborsoSpese {
public static void main (String args[]) {
JOptionPane.showMessageDialog (null, "Questo programma serve a calcolare in modo veloce\nil totale della richiesta di rimborso da presentare\n\nInserire i dati richiesti", "CALCOLO TOTALE RIMBORSO", JOptionPane.INFORMATION_MESSAGE);
String nomeS, cognomeS, meseAnnoS;
int km, scelta, numTicket;
double rimborsoKm = 0, barRisto = 0, parcheggi = 0, totale;
double euroKm = 0.40;
String sceltaS, kmS, barRistoS, parcheggiS, numTicketS;
nomeS = JOptionPane.showInputDialog ("Nome e cognome del richiedente"); //il nome e la data sono puramente informativi
meseAnnoS = JOptionPane.showInputDialog ("Mese e anno (nel formato MM/AAAA)");
JTextArea outputArea = new JTextArea ();
outputArea.setText ("Nome E Cognome: " + nomeS + "\n");
outputArea.append ("Mese E Anno: " + meseAnnoS + "\n\n");
NumberFormat importoInEuro = NumberFormat.getCurrencyInstance (Locale.ITALY);
do {
sceltaS = JOptionPane.showInputDialog ("Digitare il numero corrispondente a ciò che si deve inserire\n\nIMPORTANTE:\nUna volta completato l'inserimento dei dati digitare 0 per terminare\n\n 1. RIMBORSO CHILOMETRICO USO AUTO PROPRIA\n 2. BAR E RISTORANTI\n 3. PARCHEGGI E PEDAGGI STRADALI\n\n");
scelta = Integer.parseInt (sceltaS);
switch (scelta) {
case 1: {
kmS = JOptionPane.showInputDialog ("1. RIMBORSO CHILOMETRICO USO AUTO PROPRIA\n\n-Il rimborso è fissato a Euro 0.40 per Km-\nInserire i Km percorsi con l'auto propria:");
km = Integer.parseInt (kmS);
if (km > 0) {
rimborsoKm = (double) km * euroKm;
outputArea.append ("- RIMBORSO CHILOMETRICO USO AUTO PROPRIA\n" + " " + km + " Km x " + importoInEuro.format (euroKm) + "/Km = " + importoInEuro.format (rimborsoKm) + "\n\n");
}
else outputArea.append ("- RIMBORSO CHILOMETRICO USO AUTO PROPRIA - Nessun Km percorso\n\n");
break; }
case 2: {
numTicketS = JOptionPane.showInputDialog ("2. BAR E RISTORANTI\n\nQuante sono le ricevute da presentare ?");
numTicket = Integer.parseInt (numTicketS);
double importo = 0;
if (numTicket != 0) {
if (numTicket >= 2) {
outputArea.append ("- BAR E RISTORANTI - n° " + numTicket + " Ricevute\n");
for (int conta = 1; conta <= numTicket; conta ++) {
barRistoS = JOptionPane.showInputDialog ("2. BAR E RISTORANTI\n\n Ricevuta n° " + conta + " - Euro: ");
barRisto = Double.parseDouble (barRistoS);
outputArea.append (" -" + importoInEuro.format (barRisto) + "- ");
importo = importo + barRisto;
}
barRisto = importo;
outputArea.append ("\n - Totale: " + importoInEuro.format (barRisto) + " - \n\n");
}
else {outputArea.append ("- BAR E RISTORANTI - Una Ricevuta\n");
barRistoS = JOptionPane.showInputDialog ("2. BAR E RISTORANTI\n\n Ricevuta n° 1 - Euro: ");
barRisto = Double.parseDouble (barRistoS);
outputArea.append (" -" + importoInEuro.format (barRisto) + "- \n\n");
}
}
else outputArea.append ("- BAR E RISTORANTI - Nessuna ricevuta\n\n");
break; }
case 3: {
numTicketS = JOptionPane.showInputDialog ("3. PARCHEGGI E PEDAGGI STRADALI\n\nQuante sono le ricevute da presentare ?");
numTicket = Integer.parseInt (numTicketS);
double importo = 0;
if (numTicket != 0) {
if (numTicket >= 2) {
outputArea.append ("3. PARCHEGGI E PEDAGGI STRADALI - n° " + numTicket + " Ricevute\n");
for (int conta = 1; conta <= numTicket; conta ++) {
parcheggiS = JOptionPane.showInputDialog ("3. PARCHEGGI E PEDAGGI STRADALI\n\n Ricevuta n° " + conta + " - Euro: ");
parcheggi = Double.parseDouble (parcheggiS);
outputArea.append (" -" + importoInEuro.format (parcheggi) + "- ");
importo = importo + parcheggi;
}
parcheggi = importo;
outputArea.append ("\n - Totale: " + importoInEuro.format (parcheggi) + " - \n\n");
}
else {outputArea.append ("- PARCHEGGI E PEDAGGI STRADALI - Una Ricevuta\n");
parcheggiS = JOptionPane.showInputDialog ("3. PARCHEGGI E PEDAGGI STRADALI\n\n Ricevuta n° 1 - Euro: ");
parcheggi = Double.parseDouble (parcheggiS);
outputArea.append (" -" + importoInEuro.format (parcheggi) + "- \n\n");
}
}
else outputArea.append ("- PARCHEGGI E PEDAGGI STRADALI - Nessuna ricevuta\n\n");
break; }
}
}
while (scelta != 0);
totale = parcheggi + barRisto + rimborsoKm;
if (totale != 0)
{outputArea.append ("\n Totale complessivo rimborso: " + importoInEuro.format (totale) + " - \n");
}
else outputArea.append ("\n Questo mese non c'è alcun rimborso\n");
JOptionPane.showMessageDialog (null, outputArea, "IMPORTO COMPLESSIVO RIMBORSO SPESE " , JOptionPane.PLAIN_MESSAGE);
System.exit (0);
}}