Visualizzazione dei risultati da 1 a 6 su 6

Discussione: ciclare il main

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    81

    ciclare il main

    salve a tutti.
    innanzitutto vi chiedo scusa per la domanda "stupida" che sto per porvi.
    come già accennato in altri post, sto scrivendo in java una slot machine e ora mi trovo bloccato in questo punto:
    all'inizio l'utente deve scegliere che operazione effettuare. una volta scelta l'operazione ed eseguito il giusto metodo, il programma dovrebbe ritornare alla riga in cui permette all'utente di scegliere le operazioni da eseguire. come faccio a farglielo fare? ho fatto vari tentativi con while eccc ma senza ottenere risultati
    codice:
    public class Main {
        public static void main(String[] args) 
        { 
            SlotMachine slot = new SlotMachine ();
            
            ArrayList<String> arr = slot.Inizializza(); //stampa documento
            for(String a : arr)
                System.out.println(a);           
            
            System.out.println("Scegli operazione: 1. gioca 2. ricarica 3. ritira credito");
            Scanner s = new Scanner(System.in);        
            int numero = s.nextInt();
            
            if(numero == 1)
            {
                slot.gioca();
            }     
            
        }
    }

    codice:
    public void gioca()
         {
            double importo = ricarica();
             
            if(importo >0){
                 importo = importo - costopuntata;
                 String[] sequenza = generaSequenza();
                 for (int i = 0; i < sequenza.length; i++)
                 System.out.print(sequenza[i] +  " ");
            
                 System.out.println("\nVincita: " +calcolaVincita(sequenza));             
                 
            }
              
         }
    grazie per l'aiuto

  2. #2
    Ciao.
    Nella scelta, se ci sono varie ipotesi ti consiglio uno switch case

    Per il tuo problema
    codice:
    do{
       if(numero == 1)
          slot.gioca();
       else if (numero == 2)
          slot.xyz();
       else if (numero == X)
          .....
    
    }
    while(numero<=X);
    In questo modo col do entri almeno una prima volta nel ciclo, al termine della operazione raggiunge il while e fin quando la tua varibile numero sia tra 1 e X ciclerà sempre l'operazione.
    Per concludere basterà inserire un numero maggiore di X.

    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    81
    Quote Originariamente inviata da schumy2000 Visualizza il messaggio
    Ciao.
    Nella scelta, se ci sono varie ipotesi ti consiglio uno switch case

    Per il tuo problema
    codice:
    do{
       if(numero == 1)
          slot.gioca();
       else if (numero == 2)
          slot.xyz();
       else if (numero == X)
          .....
    
    }
    while(numero<=X);
    In questo modo col do entri almeno una prima volta nel ciclo, al termine della operazione raggiunge il while e fin quando la tua varibile numero sia tra 1 e X ciclerà sempre l'operazione.
    Per concludere basterà inserire un numero maggiore di X.

    Ciao.
    si quello che dici l'ho già fatto ma io vorrei che mi ciclasse a partire da:
    codice:
    System.out.println("Scegli operazione: 1. gioca 2. ricarica 3. ritira credito");
    cioè che una volta eseguita un metodo presente nei vari if mi ritorna a quella riga richiedendomi l'espressione da eseguire.
    grazie per l'aiuto

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Sposta più su il do in modo da comprendere anche le istruzioni di stampa del messaggio e lettura da tastiera, magari portando "fuori" la dichiarazione e inizializzazione dell'oggetto Scanner, che basta fare una sola volta.

    codice:
    ...   // inizializzazioni e stampe varie
    Scanner sc = new Scanner( System.in );
    int numero = -1;   // inizializzazione ad un valore inutile
    do {
       System.out.println("Scegli operazione: ... ");
       numero = sc.nextInt();
       if (numero == 1) {
          ...
       }
    
       ...
    
       // Prima di leggere nuovamente da tastiera, svuotiamo il buffer
       sc.nextLine();
    } while ( ... );

    Se hai capito come funziona un do/while non dovrebbe essere complicato: dentro al corpo ci vanno tutte le istruzioni che devono essere ripetute. Facile.


    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    81
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Sposta più su il do in modo da comprendere anche le istruzioni di stampa del messaggio e lettura da tastiera, magari portando "fuori" la dichiarazione e inizializzazione dell'oggetto Scanner, che basta fare una sola volta.

    codice:
    ...   // inizializzazioni e stampe varie
    Scanner sc = new Scanner( System.in );
    int numero = -1;   // inizializzazione ad un valore inutile
    do {
       System.out.println("Scegli operazione: ... ");
       numero = sc.nextInt();
       if (numero == 1) {
          ...
       }
    
       ...
    
       // Prima di leggere nuovamente da tastiera, svuotiamo il buffer
       sc.nextLine();
    } while ( ... );

    Se hai capito come funziona un do/while non dovrebbe essere complicato: dentro al corpo ci vanno tutte le istruzioni che devono essere ripetute. Facile.


    Ciao.
    grazie mille per l'aiuto non avevo proprio pensato di inserire un numero che non mi servisse a niente per far iniziare il ciclo come sempre efficientissimo!

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Veramente puoi anche semplicemente dichiarare la variabile e non assegnarle alcun valore... il valore le verrà assegnato subito dopo, quando andrai a leggere l'input da tastiera. L'assegnamento di un valore inutile è una mia "fissazione".


    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

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.