Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    aiuto problema "max" - "min" aggiornato

    ho fatto qualche passo avanti col problema del dover trovare il maggiore e minore tra tre numeri. ecco il codice aggiornato


    codice:
    package maggioreminore;
    
    import java.io.*;
    /**
     *
     * @author filipporezzadore
     */
    public class Maggioreminore {
    
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) throws Exception {
        
            int a;
            int b;
            int c;
            
           
            int max;
            int min;
            
            
            
            
            System.out.println("Inserire in numero A");
            BufferedReader input = new BufferedReader( new InputStreamReader(System.in));
            
            String line = input.readLine();
            
            a = Integer.parseInt(line);
            
            line = input.readLine();
            b = Integer.parseInt(line);
            
            line = input.readLine();
            c = Integer.parseInt(line);
            
            
           if (b > a)
               b = max;
           
           if (c > max)
               c = max;
                   
           if (b < a)
               b = min;
           
           if (c < min)
               c = min;
           
           System.out.println("Largest of the three numbers is " + max);
            System.out.println("Smallest of the three numbers is " + min);
    
    
           
            
    // TODO code application logic here
        }
        
    }


    mi dà errore su i termini "max" e "min" : variabile max might not have been initialized. e variable min might not have been initialized

    perché???
    Ultima modifica di LeleFT; 13-01-2015 a 11:25 Motivo: Aggiunti i tag CODE

  2. #2
    come ti suggerisce il warning devi inizializzare le variabili max e min.
    int max=0;
    int min=0;

    Cosicché anche se il programma non entra nei blocchi dell'if il programma saprà che valori mostrare in output.
    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
    ma se inizializzo int max e int min mi dà dei risultati sbagliati:
    dice che il più grande è 0, e il più piccolo 0

    run:
    Inserire in numero A
    2
    777
    77
    Largest of the three numbers is 0
    Smallest of the three numbers is 0
    BUILD SUCCESSFUL (total time: 17 seconds)

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Eh, beh... le assegnazioni si fanno al contrario:

    codice:
    variabile = valore_da_assegnare;

    Guarda cosa hai scritto tu nel corpo dei vari if, che controllano le relazioni:

    codice:
           if (b > a)
               b = max;
    
           if (c > max)
               c = max;
                   
           if (b < a)
               b = min;
           
           if (c < min)
               c = min;

    Invece di assegnare i valori alle variabili "min" e "max", stai assegnando i valori di "min" e "max" alle variabili con i valori introdotti dall'utente...


    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
    grazie Lele

    ok. ho provato a invertire (b=max, con max=b):
    f (b > a)
    max = b;

    if (c > max)
    max = c;

    if (b < a)
    min = b;

    if (c < min)
    min = c;



    ma mi dà ancora l' errore "variable max might not have bben initialized" e "variable min might not have been initialized"


    ???

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Come ti ha già detto schumy2000, le devi appunto inizializzare... dargli un valore iniziale. I risultati sbagliati non erano dovuti all'inizializzazione che ti ha suggerito lui, ma all'errore che ti ho evidenziato io.


    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

  7. #7
    ..spero sia l' ultima modifica:ho inizializzato: int max = 0 e int min = 0:

    codice:
    package maggioreminore;
    
    
    import java.io.*;
    import static java.lang.Math.max;
    /**
     *
     * @author filipporezzadore
     */
    public class Maggioreminore {
    
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) throws Exception {
        
            int a;
            int b;
            int c;
            
            
           
            int max = 0 ;
            int min = 0 ;
            
            
            
            
            System.out.println("Inserire in numero A");
            BufferedReader input = new BufferedReader( new InputStreamReader(System.in));
            
            String line = input.readLine();
            
            a = Integer.parseInt(line);
            
            line = input.readLine();
            b = Integer.parseInt(line);
            
            line = input.readLine();
            c = Integer.parseInt(line);
            
            
           if (b > a)
               max = b;
           
           if (c > max)
               max = c;
                   
           if (b < a)
               min = b;
           
           if (c < min)
               min = c;
           
           System.out.println("Largest of the three numbers is " + max);
            System.out.println("Smallest of the three numbers is " + min);
    
    
           
            
    // TODO code application logic here
        }
        
    }


    ma ecco cosa succede quando eseguo il programma:



    run:
    Inserire in numero A
    6
    7
    8
    Largest of the three numbers is 8
    Smallest of the three numbers is 0
    BUILD SUCCESSFUL (total time: 3 seconds)



    Smallest of three numbers = 0 (??)



    grazie ancora
    Ultima modifica di LeleFT; 13-01-2015 a 15:00 Motivo: Aggiunti i tag CODE

  8. #8
    Ciao,
    segui quello che ti dice il programma facendo qualche tuo schema, come il seguente:

    a=6, b=7, c=8
    max=0, min=0

    Tu dici al programma

    if (b > a) -- if( 7 > 6) si quindi max=b ==> max=7
    max = b;

    if (c > max) -- if( 8 > 7) si quindi max=c ==> max=8
    max = c;

    if (b < a) -- if( 7 < 6) no quindi min = 0
    min = b;

    if (c < min) -- if( 8 < 0) no quindi min=0
    min = c;


    da qui il tuo problema.
    L'algoritmo non è preciso tutto qua.

    Inoltre a cosa ti serve questa riga?
    codice:
    import static java.lang.Math.max;
    Non usi la funzione max quindi è inutile importarla.

    Ciao
    Ultima modifica di schumy2000; 13-01-2015 a 15:24
    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

  9. #9
    SOLVED!!! grazie a Schumy e a Lele

    codice:
    package maggioreminore;
    
    
    import java.io.*;
    import static java.lang.Math.max;
    /**
     *
     * @author filipporezzadore
     */
    public class Maggioreminore {
    
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) throws Exception {
        
            int a;
            int b;
            int c;
            
            
           
            int max = 0 ;
            int min = 0 ;
            
            
            
            
            System.out.println("Ins numbers");
            BufferedReader input = new BufferedReader( new InputStreamReader(System.in));
            
            String line = input.readLine();
            
            a = Integer.parseInt(line);
            
            line = input.readLine();
            b = Integer.parseInt(line);
            
            line = input.readLine();
            c = Integer.parseInt(line);
            
            
           if (b > a)
               max = b;
           
           if (c > max)
               max = c;
                   
           if (b > a)
               min = a;
           
           if (c < min)
               min = c;
           
           System.out.println("Largest of the three numbers is " + max);
            System.out.println("Smallest of the three numbers is " + min);
    
    
           
            
    // TODO code application logic here
        }
        
    }
    Ultima modifica di LeleFT; 13-01-2015 a 15:35 Motivo: Aggiunti i tag CODE

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ok, per il futuro, quando posti del codice, inseriscilo all'interno degli appositi tag [CODE] .. [/CODE], per mantenerne indentazione e formattazione. Ho corretto io tutti i post in questa discussione.


    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

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.