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");
}