Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Problema nell'esecuzione di un programma cono condizione di IF

    Salve sto frequentando un corso di programmazione java (in e-learning) e alla fine di una lezione è proposto un esercizio che richiede di scrivere un programma che chieda all'utente di "inserire il peso lordo" e il "peso netto" corrispondente e che visualizzi come risultato la tara. Nel caso la tara risulti negativa però deve essere visualizzato un messaggio di errore anziché il risultato negativo. E' molto tempo che provo a risolverlo ma non sono riuscito ad individuare il problema. Vi ho allegato il sorgente che ho scritto del quale la compilazione funziona e per aiutarvi ad aiutarmi (gioco di parole) ho scritto i commenti in italiano dentro il file sorgente che il compilatore visualizza durante la compilazione. Nonostante la compilazione vada a buon fine durante l'esecuzione il programma funziona, solamente che non fa ciò che dovrebbe: ad esempio inserendo un pesso lordo di 180 e una tara di 190 non viene visualizzato un messaggio di errore, bensì il risultato negativo (che non dovrebbe essere visualizzato). Qualcuno può darmi una mano?

    Vi ringrazio ciao

    public class PesoNetto2
    { public static void main(String[] args)
    { ConsoleReader a = new ConsoleReader(System.in);
    System.out.println ("Inserisci il peso lordo:");
    int pesoLordo = a.readInt();
    System.out.println ("Inserisci la tara:");
    int tara = a.readInt();
    int netto = (pesoLordo - tara);
    String errore = ("Errore!");
    int n = Math.min(netto, 0); //il metodo min con un solo parametro non esiste...
    System.out.println ("Il peso netto e':" + netto);
    /*
    if ( netto>n)
    return netto;
    else
    return errore;
    */
    // Un metodo che ritorna void non puo' avere comandi del tipo return qualcosa....
    }
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Una domanda: hai perso qualche lezione? Il programma che hai scritto ha ben poco senso (e, tra l'altro, non penso proprio sia compilabile nella riga in cui dichiari la variabile errore).
    Questo programma è la versione riveduta e corretta:
    codice:
    public class PesoNetto2 {
       public static void main(String[] args) {
          ConsoleReader a = new ConsoleReader(System.in); 
          System.out.println ("Inserisci il peso lordo:"); 
          int pesoLordo = a.readInt(); 
          System.out.println ("Inserisci la tara:"); 
          int tara = a.readInt(); 
          int netto = (pesoLordo - tara); 
          String errore = "Errore!"; 
          if ( netto > 0) 
             System.out.println("Tara: " + tara);
          else
             System.out.println("Il peso netto è maggiore del peso lordo!");
       } 
    }
    E l'hai scritto anche tu alla fine: un metodo void non può avere istruzioni return!


    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

  3. #3
    Originariamente inviato da LeleFT
    Una domanda: hai perso qualche lezione? Il programma che hai scritto ha ben poco senso (e, tra l'altro, non penso proprio sia compilabile nella riga in cui dichiari la variabile errore).
    Questo programma è la versione riveduta e corretta:
    codice:
    public class PesoNetto2 {
       public static void main(String[] args) {
          ConsoleReader a = new ConsoleReader(System.in); 
          System.out.println ("Inserisci il peso lordo:"); 
          int pesoLordo = a.readInt(); 
          System.out.println ("Inserisci la tara:"); 
          int tara = a.readInt(); 
          int netto = (pesoLordo - tara); 
          String errore = "Errore!"; 
          if ( netto > 0) 
             System.out.println("Tara: " + tara);
          else
             System.out.println("Il peso netto è maggiore del peso lordo!");
       } 
    }
    E l'hai scritto anche tu alla fine: un metodo void non può avere istruzioni return!


    Ciao.
    Hai ragione ad avermi risposto che il programma ha poco senso perchè ho sbagliato io nello spiegare l'esercizio che mi era stato proposto dal corso; in pratica nel primo post ho detto che il programma doveva visualizzare la tara e invece doveva essere visualizzato il peso netto (mi sono intrecciato )
    Comunque ho sostituito "return" con "System.out.println" sia dopo "if" che dopo "else" come hai postato te e il programma funziona perfettamente. Per quanto riguarda return ho scritto che un metodo void non può avere istruzioni return (come avevo imparato nella parte teorica del corso) ma ho avuto ingenuamente lo stesso dubbi nel toglierlo perchè mi ero convinto che la condizione "if" doveva avere per forza successivamente "return" come anche "else" invece adesso ho capito come da te illustrato che stavo sbagliando completamente logica. Ti ringrazio; Buona permanenza nel forum ciao

  4. #4
    Utente di HTML.it L'avatar di MMarzia
    Registrato dal
    Mar 2001
    Messaggi
    1,781
    la prossima volta ricorda di indicare il linguaggio nel titolo
    io sono festosamente cicciottello :: e. cartman

    t'amo senza sapere come, nè quando nè da dove,
    t'amo direttamente senza problemi nè orgoglio:
    così ti amo perchè non so amare altrimenti

  5. #5
    Originariamente inviato da MMarzia
    la prossima volta ricorda di indicare il linguaggio nel titolo
    hai ragione; me ne sono dimenticato.... :rollo: Ciao

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.