Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    10

    [JAVA]Problema con definizione metodo

    Ho un problema con il seguente esercizio:

    Screivere un metodo che, data una coppia di numeri interi positivi, calcola e restituisce il quoziente della divisione calcolato per sottrazioni successivi, il metodo deve avere prototipo int quoziente(int a, int b). Ad esempio l'invocazione quoziente (23, 7) deve restituire il valore 3.

    Io ho scritto il seguente metodo

    codice:
    class MetodoQuoziente{
    	public static int quoziente(int a, int b){
    		int i;
    		int q;
    
    		i=0;
    
    		do{
    			q=a-b;
    			i++;}
    		while(a>b);
    		return i;
    	}
    }
    e la seguente applicazione per testarlo

    codice:
    class Quoziente{
    	public static void main(String[] args){
    		System.out.println(MetodoQuoziente.quoziente(23,7));
    	}
    }
    Il calcolatore non segnala errori, tuttavia nel momento in cui vado ad eseguire l'applicazione, la schermata è completamente vuota, ho provato ad invertitre i numeri (7 , 23) e in questo caso mi restituisce il valore zero;

    Dove può essere l'errore?


  2. #2
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    be se nn hai notato a rimane invariato cioè è sempre maggiore di b, quindi devi cambiare la condizione del while
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    10
    usando un ciclo for al posto del do-while dovrebbe essere corretto?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da merloMT
    usando un ciclo for al posto del do-while dovrebbe essere corretto?
    Il do-while è concettualmente sbagliato. Con certi valori di input può anche capitare che non devi entrare nel ciclo!! Metti caso di a=6 e b=10. Il quoziente è 0, non devi nemmeno entrare nel ciclo!!! Con do-while si entra nel ciclo almeno 1 volta, per questo non va bene.

    In questo caso il più appropriato è un while. E comunque ad ogni ciclo devi anche far decrescere il valore di a. Come hai fatto tu, il valore di a non cambia!!! Deve essere "scalato" del valore di b, es. 23 -> 16 -> .....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    10
    quindi dovrebbe essere così:
    codice:
    while(a>b){
        q=a-b;
        a=a-b;
        i++;}
    EDIT: ho appena provato con questo e funziona!!!Grazie mille!!!


  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da merloMT
    codice:
    while(a>b){
        q=a-b;
        a=a-b;
        i++;}
    Usi 2 variabili 'q' e 'i' .... perché ti complichi la vita? Ne basta 1 sola. Devi tenere 1 variabile per il quoziente, inizialmente a 0, da incrementare ad ogni ciclo. Tutto qui.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.