Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Problema con metodi

  1. #1

    Problema con metodi

    Per imparare a utilizzare i metodi in Java ho provato a fare un esercizio: una volta estratti n numeri casuali stampo quello massimo. Il problema è che il risultato del numero massimo è sbagliato.
    Qualcuno mi saprebbe spiegare quale sia l'errore?
    Grazie!

    Questo è il codice:

    codice:
    package RipassoCasa;
    import java.util.Scanner;
    
    
    public class Funzioni {
        public static void main(String[] args) {
            Scanner tastiera = new Scanner(System.in);
            int n=0;
            int max=0;
            
            do                                                   //controllo che il numero inserito sia positivo
            {
                System.out.print("Quanti lanci? ");
            n = tastiera.nextInt();
                
                if(n<=0)
                    System.out.println("Solo valori positivi");
                else
                    break;
            }while(true);
            
            for (int i=0;i<n;i++)     
             
        System.out.println(numerocasuale()); //stampa dei numeri casuali richiamando il metodo
            
            for (int j=0;j<n;j++)
            
            {
            int numero=numerocasuale();       //assegno a una variabile il numero casuale
             if (numero>max)                           //calcolo massimo
                 max=numero;
             
            }
            System.out.println("Massimo" +max);   //stampa massimo
            
        }
            
            
            public static int numerocasuale()                 //dichiarazione metodo
            {
                 return (int)(1+ Math.random()*1000);
                      }    
    }
    Ultima modifica di LeleFT; 29-12-2014 a 10:38 Motivo: Aggiunti i tag CODE

  2. #2
    Il problema è che richiami 2 volte il metodo numeroCasuale, una per stamparlo e l'altro invece per calcolarti il max, ora il proble è che ogni invocazione di quel metodo ti viene generato un numero diverso quindi quello che stampi non è quello per il quale calcoli il max

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Li generi due volte, una per stampare e una per confrontarli mentre devi farlo una volta sola

    codice:
    public static void main(String[] args) {
            Scanner tastiera = new Scanner(System.in);
            int n, max = 0;
    
            do
            {
                System.out.print("Quanti lanci? ");
                n = tastiera.nextInt();
    
                if(n<=0)
                    System.out.println("Solo valori positivi");
                else
                    break;
            }while(true);
    
            for (int j=0;j<n;j++) {
                int numero = numerocasuale();
                System.out.println(numero);
                if (numero>max)
                    max = numero;
            }
            System.out.println("Massimo " + max); //stampa massimo
        }
    
        public static int numerocasuale() {
            return (int)(1+ Math.random()*1000);
        }

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    E comunque while(true) è bruttissimo da vedere
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    [QUOTE=RoTeam;25276839]Li generi due volte, una per stampare e una per confrontarli mentre devi farlo una volta sola

    Grazie mille!!

  6. #6
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    E comunque while(true) è bruttissimo da vedere
    Non può essere usato per un semplice controllo dei numeri inseriti?

  7. #7
    Quote Originariamente inviata da francesco.muia Visualizza il messaggio
    Il problema è che richiami 2 volte il metodo numeroCasuale, una per stamparlo e l'altro invece per calcolarti il max, ora il proble è che ogni invocazione di quel metodo ti viene generato un numero diverso quindi quello che stampi non è quello per il quale calcoli il max
    Grazie

Tag per questa discussione

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.