Java esercizio con metodi

superpippo99-votailprof
Ciao a tutti, questo è il codice di un esempio fatto a lezione sui metodi in java, stampa m^n passando per 2 metodi, provandolo a fare a mano assegnando a m e n con 2 valori casuali ripercorrendo i metodi e sostituendo rispettivamente i loro valori in ciascun modulo il risultato non torna;
qualcuno può aiutarmi a percorrere i vari passi che vengono svolti?
Grazie in anticipo.

MAIN
public class Esempiolezione {

 
    public static void main(String[] args) {
    int m=Integer.parseInt(args[0]);
    int n=Integer.parseInt(args[1]);
    int r=Arith.exp(m,n);
    System.out.println(r);
    }
}



METODO 1
 public class Arith {

public static int exp(int x, int y){

int z=1;
while (y>0){
z=Arith.mult(x,z);
y=y-1;
}
return z;
}



METODO 2
public static int mult(int x, int y){

int z=0;
while (y>0){
z=z+x;
y=y-1;
}
return z;
   }
}

Risposte
apatriarca
Non sono certo di ritrovarmi nella tua terminologia. Che intendi con modulo esattamente? Quello che hai chiamato con Modulo 1 e Modulo 2 nel tuo post, mi sembrano semplicemente due metodi statici pubblici della stessa classe. I moduli in java sono per me un'altra cosa.

Stai usando un qualche IDE (Eclipse, Netbeans..) per programmare in java? Sarebbe istruttivo imparare ad usare il debugger in modo da eseguire il codice un'istruzione per volta per capirlo meglio. In caso contrario, una soluzione alternativa è quella di stampare i risultati intermedi con System.out.println. Se per esempio certo che m ed n siano stati letti correttamente? I due metodi mi sembrano infatti a prima vista corretti.

superpippo99-votailprof
hai ragione, mi sono confuso scrivendoli, intendevo 2 metodi sorry.
Comunque uso Netbeans.
Come si usa il debugger per eseguire un'istruzione per volta?

apatriarca
Mi dici quali valori di m ed n hai provato? Sei certo che \(m^n\) sia minore di \(2^{31} = 2 147 483 648\)?

superpippo99-votailprof
ho provato m=2 n=3 e stampando la z ad ogni passo all'interno di ogni metodo viene

mult 2
exp 2
mult 2
mult 4
exp 4
mult 2
mult 4
mult 6
mult 8
exp 8
8

apatriarca
E che risultato ti aspettavi? È vero che \(2^3 = 8\).

superpippo99-votailprof
"apatriarca":
E che risultato ti aspettavi? È vero che \(2^3 = 8\).

sisi ma che il programma funzionasse non c'erano dubbi, il problema è che ripercorrendolo su carta e dando io i valori 2 e 3 non riesco ad arrivare ad 8 facendo i vari passaggi, ma con i risultati intermedi ora sto capendo meglio.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.