Problema metodo booleano

di il
2 risposte

Problema metodo booleano

Salve, qualcuno sa perché il metodo "threeSmooth" restituisce sempre false?
Mi prende sempre la condizione anche con vettori contenenti solo 2 e 3
(gli passo il vettore ottenuto con il metodo "factorization" che consiste nei fattori primi di un numero)

int[] factorization (int a) {
	int[] f = new int [a] ;
	int p = 0 ;
	int residue = a ;
	int n = 2 ;
	while (residue > 1) {
		while (residue % n != 0) {
			n += 1 ;
		}
		f[p] = n ;
		p += 1 ;
		residue /= n ;
	}
	f = cleanArray(f) ;
	return f ;
}
 
boolean threeSmooth (int[] f) {
	for (int i = 0; i < f.length; i++) {
		if ( f[i] != 2 || f[i] != 3 ) {
			return false ;
		}
	}
	return true ;
}

2 Risposte

  • Re: Problema metodo booleano

    alefede96 ha scritto:


    Salve, qualcuno sa perché il metodo "threeSmooth" restituisce sempre false?
    Ragiona bene sulla espressione

    f[i] != 2 || f[i] != 3

    Sostituisci mentalmente a f[i] un valore come 1 o 2 o 3 o 4 o 5.
    Vedrai che è sempre true (quindi il tuo metodo fa il return false).
  • Re: Problema metodo booleano

    Oddio hai ragione, grazie mille dell'aiuto!
Devi accedere o registrarti per scrivere nel forum
2 risposte