Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Richiamare un menù

  1. #1

    Richiamare un menù

    Ciao, avrei bisogno del vostro aiuto.......

    Ho un sistema client-server in cui il client mostra un menù da cui è possibile fare alcune scelte:

    codice:
    1) leggi
    2) scrivi
    3) esci
    Vorrei poter scegliere l'opzione "2)" e poi far tornare a video il menù per poter scegliere l'opzione "1)".

    Sapreste dirmi come implementare la cosa?
    Se faccio riapparire il menù doop la prima scelta, non mi valuta l'opzione scelta al secondo giro......

    Thank you.

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Richiamare un menù

    Metti tutto dentro un do-while.

    Originariamente inviato da java_junior
    Se faccio riapparire il menù doop la prima scelta, non mi valuta l'opzione scelta al secondo giro......
    Non sapendo cosa hai scritto la vedo dura capire dove hai sbagliato eh...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Scusa hai ragione.

    codice:
    public void funzione() throws ClassNotFoundException, IOException{
        
      boolean choice = true;
            try{
                
       while(choice){
                
           menù();
                scelta_menù = scan.nextInt();
                System.out.println("numero scelto: " + scelta_menù); <--- lo scrivo per controllare il numero inserito
                
             switch(scelta_menù){
                 case '1': {opzione_1(); break;}
                 case '2': {opzione_2(); break;}
                 case '3': {opzione_3(); break;}
                 case '4': {esc(); socket_client.close(); choice = false; break;}
                 default: {
                        System.out.println("Scrivi numero corretto");
                        continue;
                    }
              }
       }
            }
            
            catch(IOException e){System.out.println(e.getMessage());}
        }
    Non mi riconosce il numero dicendo sempre "Scrivi numero corretto".......

  4. #4
    Ho provato anche con un try così fatto, ma stesso risultato:

    codice:
    try{
                
                    for(;;){ <-------- va bè, qui ci sono due punti e virgola
                        
                        menù();
                scelta_menù = scan.nextInt();
                System.out.println("numero scelto: " + scelta_menù);
                        
                    if(scelta_menù == 1) {opzione_1(); break;}
                    if(scelta_menù == 2) {opzione_2(); break;}
                    if(scelta_menù == 3) {opzione_3(); break;}
                    if(scelta_menù == 4) {opzione_4(); socket_client.close(); break;}
                    else{
                        System.out.println("Scrivi numero corretto");
                        scelta_menù = scan.nextInt();
                        continue;
                    }
                }
                }

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    1 è un intero
    '1' è un char

    Suggerimento: evita le lettere accentate nel codice, in particolare nel nome di variabili, classi e e metodi

    Poi, se la IOException la catturi con try-catch perché il metodo la può rilanciare?
    E cosa c'entra la ClassNotFoundException?

    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Suggerimento: evita le lettere accentate nel codice, in particolare nel nome di variabili, classi e e metodi
    Ok, provvedo subito.

    cosa c'entra la ClassNotFoundException?
    Il programma me la inserisce alrrimenti vede un'errore sul primo "case" che incontra......

    se la IOException la catturi con try-catch perché il metodo la può rilanciare?
    Non ho capito...... considera che sono alle primissime armi....

    1 è un intero
    '1' è un char
    E quindi come dovrei scriverlo nel "case" l'intero?

    Scusa per le domande stupide........ grazie per l'aiuto.

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da java_junior
    Il programma me la inserisce alrrimenti vede un'errore sul primo "case" che incontra......
    Dipenderà da come è dichiarato opzione_1
    Con che versione di java stai compilando?

    Originariamente inviato da java_junior
    Non ho capito...... considera che sono alle primissime armi....
    Quando si verifica un'eccezione puoi fare due cose:
    1. gestirla (se il metodo è in grado di farlo)
    2. rilanciarla al metodo chiamante.
    Ad esempio, se chiedi di inserire un numero e l'utente inserisce una stringa probabilmente otterrai una InputMismatchException. Catturi questa eccezione, avverti l'utente di inserire solo numeri e gli riproponi il prompt di inserimento.

    Ora.
    Tu hai un metodo che può rilanciare un'eccezione (throws IOException).
    Dentro quel metodo tutte le istruzioni sono dentro un try-catch (IOException). E' ridondante...

    Originariamente inviato da java_junior
    E quindi come dovrei scriverlo nel "case" l'intero?
    Rileggi le due righe che ho scritto nel messaggio che hai quotato e lo scoprirai...

    Ti faccio un esempio base:

    codice:
        public static void funzione()
        {
    	Scanner scan = new Scanner(System.in);
    	int choose;
    
    	do
    	{
    	    try
    	    {
    		System.out.println("\n1 - esegui opzione 1\n2 - esegui opzione 2");
    		System.out.println("0 - QUIT");
    		System.out.print("> ");
    		choose = scan.nextInt();
    
    		switch (choose)
    		{
    		    case 1:
    			System.out.println("opzione 1");
    			break;
    		    case 2:
    			System.out.println("opzione 2");
    			break;
    		}
    	    }
    	    catch (InputMismatchException ex)
    	    {
    		System.out.println("Invalid input. Please insert an integer number");
    		if (scan.hasNext())
    		{
    		    // ripulisce il buffer
    		    System.out.println("Skipped data: " + scan.next());
    		}
    		choose = -1;
    	    }
    	}
    	while (choose != 0);
        }
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Dipenderà da come è dichiarato opzione_1
    public void opzione_1() throws IOException, ClassNotFoundException

    quelle eccezioni sono per lo stesso motivo: suggerite dal programma.

    Con che versione di java stai compilando?
    Mmm... sto usando netbeans 7.1.2........ non so se ti ho risposto.......

    Tu hai un metodo che può rilanciare un'eccezione (throws IOException). Dentro quel metodo tutte le istruzioni sono dentro un try-catch (IOException). E' ridondante...
    Posso togliere quelle eccezioni dalla dichiarazione della funzione..... provo.....

    Se io scrivo "case 1:" il numero riconosciuto non è 1, ma 49...... però è tutto dichiarato come intero...... lo stesso con gli altri numeri.

    Se dichiaro invece che intero un carattere allora funziona quasi tutto (a parte che non voglio che scrivendo 1123 mi vede solo l'1 della prima cifra), però non si può navigare nel menù all'infinito: vedo il menù, inserisco numero errato, mi dice di correggere, inserisco numero giusto e mi fa l'operazione, poi se ne scelgo un'altra tipo esci, sul server non mi dice più che mi sono disconnesso.

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.