Java while

Lionel2
Salve,

perché questo programma così come ho realizzato non va bene?

/*
 * 
 * Scrivere un programma che chiede all'utente di inserire due numeri interi n e
 * d e stampa tutti i numeri interi non negativi minori o uguali a n e 
 * divisibili per d. Ad esempio, inserendo n=11 e d=2 il risultato deve essere: 
 * 2, 4, 6, 8, 10.
 * 
 * Suggerimento: usare l'operatore u % v che calcola il resto della divisione di u per v.
 */
package esercizi;

import java.util.Scanner;

/**
 *
 * @author Lionel
 */
public class NumeriInteriDivisibili {
    public static void main(String [] args){
        int numeroUno;
        int numeroDue;
        int i;
        Scanner in = new Scanner(System.in);
        System.out.println("Inserisci primo numero: ");
        numeroUno = in.nextInt();
        System.out.println("Inserisci secondo numero: ");
        numeroDue = in.nextInt();
       
        i = 0;
        while(i<numeroUno && i%numeroDue==0){
            System.out.println(i);
            i++;
        }
        
    }    
}


Grazie.

Risposte
Lionel2
Ho risolto facendo così. Ma perché con il while così come avevo fatto in precedenza non si poteva fare?


i=1;
        do{
            if (i%numeroDue==0){
                System.out.println(i);
            }
            i++;
        }
        while(i<numeroUno);


Grazie.

Lionel2
Ne ho fatta anche una versione con gli array

package esercizi;

import java.util.Scanner;

/**
 *
 * @author Lionel
 */
public class NumeriInteriDivisibili2 {
    public static void main(String [] args){
       int [] numeriUtente;
       int numeroInteri = 3;
       int i;
        
       numeriUtente = new int[numeroInteri];
       for(i=0;i<2;i++){
            Scanner in = new Scanner(System.in);
            System.out.println("Inserisci numero intero: ");
            numeriUtente[i] = in.nextInt();
            System.out.println("Il numero inserito è: " +numeriUtente[i]);
        }
        i=1;
        do{
            if (i%numeriUtente[1]==0){
                System.out.println(i);
            }
            i++;
        }
        while(i<numeriUtente[0]);    
    }
}

hamming_burst
       i = 0;
        while(i<numeroUno && i%numeroDue==0){
            System.out.println(i);
            i++;
        }


       i=1;
        do{
            if (i%numeroDue==0){
                System.out.println(i);
            }
            i++;
        }
        while(i<numeroUno);


bhe la differenza sta nella visibilità delle condizioni su $i$.
sono due non commutabili, cioè una è la condizione di fine ciclo (con implicazione iteraziona), l'altra valuta che sia multiplo (con implicazione stampa).

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