Trovare un numero doppio

di il
2 risposte

Trovare un numero doppio

Ciao a tutti, ho iniziato da poco a studiare programmazione e lo sto facendo con java.

Ho dei dubbi riguardo ad un esercizio da svolgere e spero che qualcuno possa aiutarmi a capire.

L'esercizio in questione è questo:
Scrivere un programma DoppioUnoDellaltro che he prevede un array di 10 numeri interi contenente valori a piacere (senza bisogno di chiederli all’utente) e stampa "Doppio uno dell’altro" se nell’array sono presenti due valori che sono l’uno il doppio dell’altro, oppure stampa "NO" altrimenti. (Il programma deve essere scritto facendo finta di non sapere quali siano i valori inseriti nell’array)

La mia soluzione è stata questa e ottengo 2 errori:
1) ho metto un println per verificare quando trova il doppio, e ho notato che trova solo il primo 10
2) non prende in considerazione l'if fuori dal ciclo

public class DoppioUnoDellaltro {

	public static void main(String[] args) {
		
		int [] numInteri = {5, 10, 5, 3, 29, 10, 20, 30, 86};
		boolean controllo = false;
	
		for(int i = 0; i < 9; i++){
			
			if(numInteri[i]==(numInteri[i+1])*2){
				controllo = true;
				System.out.println("doppio uno dell'altro");
			} else {
				System.out.println("no");
			}
		}
		
		if(controllo){
			System.out.println("Doppio uno dell'altro");
		} else {
			System.out.println("no");
		}
}
}

Ho trovato la soluzione dell'esercizio e non capisco a) la logica del mettere un doppio ciclo, b) scrivere < 10 nel secondo ciclo.
Per favore, qualcuno può spiegarmelo? Grazie mille.

int [] valori = { 4 , 5, 1, 5, 7, 6, 2, 6, 5, 4 };
boolean trovato = false ;

for (int i =0; i <9; i ++) {
for (int j=i +1; j <10; j ++) {
if ( valori [i ]==2* valori [j] || valori [j ]==2* valori [i ])
trovato = true ;
}
}
if ( trovato ) System . out . println (" Doppio uno dell ’altro ");
else System . out . println ("NO");
}

2 Risposte

  • Re: Trovare un numero doppio

    I due for servono perché così confronti i con i+1, i+2..e così via. Inoltre, circa il tuo secondo dubbio, senza < 10 nel secondo ciclo non riusciresti a confrontare l'ultimo, ovvero quando i=9.
  • Re: Trovare un numero doppio

    Grazie mille, adesso ho capito!!
Devi accedere o registrarti per scrivere nel forum
2 risposte