Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    32

    Do while...

    Con questa funzione devo controllare se nell'arrayValore(in cui ci stanno 0 e 1)
    si estragga una posizione casuale, affinchè il valore è 1.
    Il problema è che non fa il controllo anche se il valore è 0. C'è qualche
    problema di gestione nel do while secondo voi?

    public static int scegli (int arrayValore[])
    {
    int trovato;
    // ESTAI DALL'ARRAY UN VALORE CON POSIZIONE DA 0 A 7 : zero oppure uno
    do
    {
    // Random da 0 a 7
    trovato = (int) (Math.random () * 7);
    System.out.println ("Numero estratto: "+ arrayValore[trovato]); // Stampa l'estrazione

    if (arrayValore[trovato]==1)
    {
    System.out.println ("Uguale Colore");
    }
    if (arrayValore[trovato]==0)
    {
    System.out.println ("Colore Diverso");
    }
    return trovato;
    }
    while (arrayValore[trovato]==1);
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    tu ritorni trovato sempre e comunque... prova qualcosa del genere

    codice:
    boolean flag = false;
    int trovato;
    
    while (!flag) {
      trovato = (int) (Math.random () * 7);
      flag = (arrayValore[trovato] == 1 ? true : false);
    }
    
    return trovato;
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Con questa istruzione
    codice:
    trovato = (int) (Math.random () * 7);
    non estrai un valore a caso fra 0 e 7, ma sempre e solo tra 0 e 6.

    Math.random() estrae un double compreso fra 0 (compreso) e 1 (escluso).

    Per estrarre un valore fra 0 e 7 devi fare così:
    codice:
    trovato = ((int) (Math.random() * 32000) % 8);
    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

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    32

    Grazie..

    Grazie tante ragazzi..

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    32

    Chiarimento...

    Ragazzi, scusate ma ho due cose da chiedervi: ho modificato la funzione in base al codice che avete mandato (Andrea1979) ed anche se risulta essere funzionante mi è rimasto il problema che devo trovare il valore 1 per uscire dalla funzione. Cioè in questo modo esco se trovo sia 0, che 1.
    E poi, mi serve qualcosa che blocchi la funzione se i valori memorizzati in arrayValore sono tutti 0.
    Spero di essere stato chiaro...grazie di cuore!

    public static int scegli (int arrayValore[])

    {
    int trovato;
    boolean flag = false;

    while (!flag) // domanda: questo significa affinchè non è true?
    {
    trovato = (int) (Math.random () * 8);
    flag = (arrayValore[trovato] == 1 ? true : false);

    if (arrayValore[trovato]==1)
    {
    System.out.println ("Ho estratto 1 dunque Colore è Uguale");
    }
    if (arrayValore[trovato]==0)
    {
    System.out.println ("Ho estratto 0 dunque il Colore è Diverso");
    }
    return trovato;
    }
    return 0;
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    nel mio codice return trovato era fuori dal while per una ragione...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.