Come posso inserire un if all’interno di un ciclo while?

import java.util.Scanner;
public class ex11 
{
static Scanner type=new Scanner(System.in);
    public static void main(String args[])
    {
        int fact=1;
        System.out.println("Enter a natural number ");
        int num=type.nextInt();

        int i=1;
        while(i<=num)
        {
            fact*=i;
            i++;    
        }
        System.out.println("Factorial of number " + num + " is " + fact);
    }
}

Sto cercando di inserire un’istruzione condizionale all’interno del ciclo while. La condizione è per il test sarebbe, se num è un numero negativo, S.O.P.("You entered a negative #"); in altre parole,

if(num<0)
    S.O.P.("You entered a negative #");

Tuttavia non stampa correttamente.

  • hai provato in realtà mettendo in un se-istruzione nel ciclo while?
  • Prima di tutto, devi impostare i = 1 & poi devi impostare la condizione nel while, come i<= num. Quando si immette un numero negativo questo non immettere il ciclo while & per questo non eseguire ciò che è all’interno del ciclo while.
InformationsquelleAutor Rudy | 2016-07-30

 

5 Replies
  1. 0

    Se si verifica all’interno del ciclo non funziona ancora moltiplicare il fact. È necessario assicurarsi che il num non è negativo prima di iniziare il ciclo while.

    int num = 0;
    do {
        if (num<0){
            System.out.println("You printed out a negative number");
        }
        System.out.println("Enter a natural number ");
        int num=type.nextInt();
    } while (num<0);

    Anche su una nota di parte probabilmente si dovrebbe chiudere il tuo scanner quando non li si utilizza.

  2. 0

    La questione è difficile da capire, ma da quello che ho letto sembra che si voglia di un ciclo di esecuzione fino a quando non viene immesso un valore che soddisfa le vostre pre-condizione di essere positiva

    System.out.println("Enter a non negative number :: ");
    int num = type.nextInt();
    while(num < 0){
        System.out.println("The number you entered was negative!");
        System.out.println("Enter a non negative number :: ");
        num = type.nextInt();
    }

    Loop come questo sono fondamentali per rendere sicuri i dati che si sta utilizzando è all’interno del pre-condizione per l’operazione, che potrebbe causare DivideByZero errori o altri problemi. Questo ciclo deve essere collocato prima di usare il valore di num modo è possibile assicurarsi che sia all’interno del contesto del programma.

  3. 0

    Il problema è che se il num è negativo, non andare all’interno del while loop che è perché prima che il while loop devi inizializzare i=1, dato un qualsiasi numero negativo è minore 1 la condizione per while loop diventa falsa. Se si desidera verificare se num è negativo inserisci la if condition prima della while loop come segue

       import java.util.Scanner;
        public class ex11 
        {
        static Scanner type=new Scanner(System.in);
        public static void main(String args[])
        {
            int fact=1;
            System.out.println("Enter a natural number ");
            int num=type.nextInt();
    
            int i=1;
    
             if(num < 0) {
               System.out.println("You entered a negative #");
              }
             else{
    
                  while(i<=num)
                  {
                   fact*=i;
                   i++;    
                   }
            System.out.println("Factorial of number " + num + " is " + fact);
           }
        }
    
    }
  4. 0

    Per rispondere alla tua domanda …. come questo:

    int i = 1;     //HERE
    while (i <= num) {
        if (num < 0) {
            System.out.println("You entered a negative #");
        }
        fact *= i;
        i++;    
    }

    Tuttavia, che non è andare a lavorare.

    Supponiamo che “num” leggere è meno di zero.

    • La dichiarazione etichettato come “QUI”, abbiamo impostato “i” per uno.
    • In next, ci prova “io < num”.
    • Dal “num” è minore di zero, che prova dà “falsi” e noi saltare l’intero ciclo!

    Che significa che la vostra istruzione condizionale nel corpo del ciclo non sarebbe eseguiti … se “num” è meno di zero.

    Poiché questo è, ovviamente, compiti a casa, lascio a voi capire di cosa si dovrebbe fare qui. Ma (SUGGERIMENTO!) non è mettendo la condizionale all’interno del ciclo.

    (Si prega di notare: ho corretto un certo numero di errori nel codice. Confrontare la versione originale con la mia. Questo è come si dovrebbe scrivere codice Java.)

    • non direi che i compiti a casa, poiché il suo fine luglio 😛
    • Mai sentito parlare dell’Emisfero Meridionale? Mai sentito parlare di Scuole Estive? Moocs? Inoltre, se è strettamente compiti o non è questo il punto. Si tratta di un esercizio di APPRENDIMENTO e la OP di imparare molto di più da risolvere il problema per se stesso.
    • Ben detto XD. 1 punto di Stephen C
  5. 0

    In sostanza, è necessario verificare se il numero è minore di 0. Questo deve essere fatto durante l’assunzione di ingresso. Si può semplicemente prendere l’input all’interno di un ciclo while in questo modo:

    System.out.println("Enter a natural #");
    while(true){ //loop runs until broken
        num = type.nextInt();
        if(num>=0)
            break;
        System.out.println("Wrong input. Please enter a positive number");
    }

    Il programma di controllo interrompe il ciclo se num>=0, cioè, positivo, altrimenti, si continua con la successiva parte del loop e visualizza il messaggio di errore e prende l’input di nuovo.

    Si prega di notare che i numeri naturali sono quelli >= 1. Nel programma, in realtà si sta cercando di input un numero intero che è >= 0.

Lascia un commento