Problema con i metodi

di il
4 risposte

Problema con i metodi

Non riesco a far funzionare questo programma, molto probabilmente sbaglio ad invocare il metodo, qualche consiglio?
Questo è il codice che ho scritto:
import java.util.Scanner;

public class esSecchi{

	public static float quantiSecchi(float a, float b, float risultato){
float a = float capienzaVasca;
	float b = float capienzaSecchio;
		
		do {
			risultato = risultato + a;
		} while (risultato < b);
		return risultato;}

public static void main(String arg[]){
	Scanner tastiera = new Scanner(System.in);

System.out.println("Digitare capienza vasca:");
float capienzaVasca = tastiera.nextFloat();
System.out.println("Digitare capienza secchio:");
float capienzaSecchio = tastiera.nextFloat();
float risultato = 0;

System.out.println("Numero di secchi: " + esSecchi.quantiSecchi(float capienzaVasca, float capienzaSecchio, float risultato));}
} 
Dovrei scrivere un programma che riceva per tre volte (usando un ciclo while) una coppia di numeri float, memorizzati in due variabili denominate capienzaVasca e capienzaSecchio. Ad ogni iterazione, il programma dovrà invocare il metodo quantiSecchi(), descritto sotto, passando come parametro la coppia corrente di numeri float, visualizzando in un opportuno messaggio il valore da esso restituito.
Metodo quantiSecchi():
riceve come parametri due numeri float, denominati a e b;
simula, con un ciclo o con un'opportuna espressione, il ripetuto versare a litri di liquido in una vasca di capacità b litri;
restituisce al chiamante l'intero corrispondente a quanti versamenti occorrono per riempire la vasca; ad esempio, se a == 2.4 e b==12, il valore restituito da quantiSecchi() sarà 5.

Grazie mille anticipatamente.

4 Risposte

  • Re: Problema con i metodi

    Ti stai INVENTANDO LA SINTASSI Java!!!

    Do dove saltano fuori queste espressioni
    
    float a = float capienzaVasca;
    
    
    System.out.println("Numero di secchi: " + esSecchi.quantiSecchi(float capienzaVasca, float capienzaSecchio, float risultato))
    
    ?????

    NON INVENTARTI la sintassi!

    La sintassi SI STUDIA SUI LIBRI. E la trovi descritta su QUALUNQUE libro su Java.
  • Re: Problema con i metodi

    Ti ho corretto una parte del codice, il resto l'ho devi completare con il seguente errore che ha generato:
    
    Digitare capienza vasca:
    Exception in thread "main" java.util.NoSuchElementException
    	at java.util.Scanner.throwFor(Scanner.java:862)
    	at java.util.Scanner.next(Scanner.java:1485)
    	at java.util.Scanner.nextFloat(Scanner.java:2345)
    	at HelloWorld.main(HelloWorld.java:21)
    
    Correzione codice:
    
    import java.util.Scanner;
    
    
    public class TestMain {
      public static void main(String[] args) {
       
        float ris = 0;
        
        Scanner tastiera = new Scanner(System.in);
    
    		System.out.println("Digitare capienza vasca:");
    		float capienzaVasca = tastiera.nextFloat();
    
        		System.out.println("Digitare capienza secchio:");
    		float capienzaSecchio = tastiera.nextFloat();
        		
        		System.out.println("Numero di secchi: " + TestMain.quantiSecchi(capienzaVasca, capienzaSecchio, ris));
        
      }
      
      public static float quantiSecchi(float a, float b, float risultato){
    		do {
              		risultato = risultato + a;
    		} while (risultato < b);
        
    		return risultato;
      }
      
    }
    
    
    
  • Re: Problema con i metodi

    E io aggiungo che NON ha assolutamente alcun senso che il metodo quantiSecchi abbia un parametro risultato. La variabile del risultato va definita nel metodo e poi restituita.
  • Re: Problema con i metodi

    POLLON ha scritto:


    Non riesco a far funzionare questo programma, molto probabilmente sbaglio ad invocare il metodo, qualche consiglio?
    Questo è il codice che ho scritto:
    import java.util.Scanner;
    
    public class esSecchi{
    
    	public static float quantiSecchi(float a, float b, float risultato){
    float a = float capienzaVasca;
    	float b = float capienzaSecchio;
    		
    		do {
    			risultato = risultato + a;
    		} while (risultato < b);
    		return risultato;}
    
    public static void main(String arg[]){
    	Scanner tastiera = new Scanner(System.in);
    
    System.out.println("Digitare capienza vasca:");
    float capienzaVasca = tastiera.nextFloat();
    System.out.println("Digitare capienza secchio:");
    float capienzaSecchio = tastiera.nextFloat();
    float risultato = 0;
    
    System.out.println("Numero di secchi: " + esSecchi.quantiSecchi(float capienzaVasca, float capienzaSecchio, float risultato));}
    } 
    Dovrei scrivere un programma che riceva per tre volte (usando un ciclo while) una coppia di numeri float, memorizzati in due variabili denominate capienzaVasca e capienzaSecchio. Ad ogni iterazione, il programma dovrà invocare il metodo quantiSecchi(), descritto sotto, passando come parametro la coppia corrente di numeri float, visualizzando in un opportuno messaggio il valore da esso restituito.
    Metodo quantiSecchi():
    riceve come parametri due numeri float, denominati a e b;
    simula, con un ciclo o con un'opportuna espressione, il ripetuto versare a litri di liquido in una vasca di capacità b litri;
    restituisce al chiamante l'intero corrispondente a quanti versamenti occorrono per riempire la vasca; ad esempio, se a == 2.4 e b==12, il valore restituito da quantiSecchi() sarà 5.

    Grazie mille anticipatamente.
    POLLON devi studiare, però, prima di fare gli esercizi. Questo è l'ultimo aiuto da parte mia, perché sennò il tutto è controproducente per te

    Le variabili si dichiarano <tipo> <nome variabile>;
    Dopo che le hai dichiarate non devi specificare di nuovo il tipo
    
    	float capienzaVasca;
    	float capienzaSecchio;
    
    se vuoi inizializzarle nella dichiarazione: <tipo> <nome variabile> = [valore iniziale];
    
    	float capienzaVasca = a;
    	float capienzaSecchio = b;
    
    Tutto ciò comunque non ti serve perché le variabili nel prototipo del metodo sono direttamente utilizzabili
    
        public static float quantiSecchi(float a, float b, float risultato){	
            do {
                risultato = risultato + a;
    	} while (risultato < b);
    	return risultato;
        }
    
    Anche se non obbligatoria, l'indentazione è importante, altrimenti non capisci come è impostato il codice.

    Il tipo non va dichiarato nemmeno quando chiami il metodo. Questa una possibile soluzione finale (senza l'iterazione che dovrai fare tu)
    
    public class esSecchi{
        private static int quantiSecchi(float a, float b){	
            int secchi = 0;
            float litri = 0;
            while (litri < a) {
                litri += b;            
                secchi += 1;
    	} 
    	return secchi;
        }
    
        public static void main(String arg[]){
    	Scanner tastiera = new Scanner(System.in);
            System.out.println("Digitare capienza vasca:");
            float capienzaVasca = tastiera.nextFloat();
            System.out.println("Digitare capienza secchio:");
            float capienzaSecchio = tastiera.nextFloat();
    
            System.out.println("Numero di secchi: " + quantiSecchi(capienzaVasca, capienzaSecchio));
        }
    } 
    
Devi accedere o registrarti per scrivere nel forum
4 risposte