Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [JAVA] Switch - Si può chiedere nuovamente la scelta ?

    Ciao a tutti,
    sto progettando un piccolo programma in java, ma mi sono bloccato in un punto:
    usando la classe JOptionPane e il suo metodo showInputDialog leggo una stringa che poi converto in una variabile di tipo int con Integer.parseInt

    Il numero letto corrisponde ad uno dei vari case di uno switch: per ogni case viene eseguita una determinata operazione ma poi, alla fine, c'è sempre il break che mi porta fuori.

    E' possibile chiedere se fare ritorno al menu di scelta dello switch o uscire definitivamente ?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Inserisci il tutto in un ciclo.

    codice:
    do
       ...   // Chiedi all'utente il valore
       ...   // converti in intero
       switch( valore ) {
          case 0: ... break;
          case 1: ... break;
          ...
          case N:   // L'utente ha indicato che vuole uscire
             condizione di permanenza = false;
             break;
       }
    while( condizione di permanenza );
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    certo che puoi. rifai la scelta e rilanci il metodo di "scelta".

    posta il codice così possiamo vederlo insieme e magari modificarlo/migliorarlo

  4. #4
    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);
    	}}

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Magari ogni tanto schiaccia invio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.