2015-10-07 2 views
-6

Je n'arrive pas à comprendre ce que j'ai fait de mal avec mon code pour créer une boucle infinie. J'apprécierais vraiment que quelqu'un puisse m'aider à m'expliquer cela.Qu'est-ce qui cause ma boucle infinie?

import java.util.Scanner; 

class LoopMath1 { 
    public static void main(String[] args) { 
     Scanner inputScanner; 
     inputScanner = new Scanner(System.in); 

     //gets a number from a user and parses the string as an int 
     System.out.println("Please give me a positive number"); 
     String userNum; 
     userNum = inputScanner.nextLine(); 
     System.out.println("Your number is " + userNum + "."); 
     int number = Integer.parseInt(userNum); 

     printX(number); //function call 

     //prints 2 to the x power 
     System.out.print("2^" + number + "="); 
     int j = 1; 
     int twoToThe = 2; 
     while (j < number) { 
      twoToThe *= 2; 
      j++; 
     } 
     System.out.print(twoToThe); 

     //determines if the user number is prime 
     int i = 0; 
     for (i = 1; 1 < number; i++) { 
      int nPrime = number; 
      if (nPrime == 0) { 
       System.out.println(number + " is not prime."); 
       break; 
      } else { 
       System.out.println(number + " is prime."); 
      } 

     } 
    } 

    //this is a function to print a certain amount of Xs, depending   on the user input 
    public static void printX(int nTimes) { 
     final int WIDTH = nTimes; 
     while (nTimes < WIDTH) { 
      System.out.print("x"); 
      nTimes += 1; 

     } 
    } 
} 
+2

Le marquage avec java sera utile –

+0

Recherchez également le "problème d'arrêt". Je pense que Java a une solution dans l'API standard –

+0

quelle boucle est inifinite .... avez-vous vérifié le nombre entré par l'utilisateur ?? –

Répondre

2

Remplacer

for (i=1; 1 < number; i++) { 

par

for (i=1; i < number; i++) { 

Votre incrémenteur initialisé dans la première partie de votre boucle doit être testé dans la deuxième partie de préférence et incrémentée dans le le troisième.

3

for (i=1; 1 < number; i++) a une faute de frappe. 1 devrait être i comme dans for (i=1; i < number; i++)

+2

nTimes

+0

D'accord, c'est également un problème avec le programme. –

+0

Si vous pensez que c'est une faute de frappe, votez pour fermer en tant que tel. –