2016-02-10 1 views
-1

Il s'agit d'un outil que vous pouvez utiliser pour générer une commande de positions dans n'importe quelle circonstance.Numéros aléatoires dans une plage

Cependant, je rencontre des boucles infinies. Comment puis-je réparer cela?

import java.util.Random; 
import java.util.Scanner; 
public class WhoGoesFirst { 
    public static void main(String args[]) { 
     Random random = new Random(); 
     Scanner input = new Scanner(System.in); 
     int MIN = 1; 
     int students = 0; 

     System.out.print("How many students do you have?"); 
     students = input.nextInt(); 

     int comp = random.nextInt(students - MIN + 1) + MIN; 

     for (int number = 0; number <= students; comp++) { 
      System.out.println(random); 
     } 
    } 
} 
+9

Vous n'augmentez jamais 'number'. –

Répondre

4

Increment votre variable numérique dans la boucle et il devrait résoudre le problème:

for (int number = 0; number <= students; number++, comp++) { 
       System.out.println(comp); //random is an object 
     } 
+0

Pourquoi ne pas simplement incrémenter comp à l'intérieur de la boucle et le nombre dans le pour (comme il se doit) – YounesM

+2

Ou les deux ... 'pour (int nombre = 0; nombre <= étudiants; nombre ++, comp ++) {...}' – callyalater

+0

J'aime ça @callyalater, mis à jour. Élégant! – Ageonix

2

Vous devez nombre incrémenter:

import java.util.Random; 
import java.util.Scanner; 
public class WhoGoesFirst { 
     public static void main(String args[]) { 
     Random random = new Random(); 
     Scanner input = new Scanner(System.in); 
     int MIN = 1; 
     int students = 0; 

     System.out.print("How many students do you have?"); 
     students = input.nextInt(); 

     int comp = random.nextInt(students - MIN + 1) + MIN; 

     for (int number = 0; number <= students; number++) { 
       System.out.println(random); 
       comp++; 
     } 
    } 
} 
1

Regardez cette ligne:

System.out.println(random); 

Cette implémentation est essayant d'imprimer le générateur de nombres aléatoires, pas les nombres eux-mêmes. Il y a une solution beaucoup plus facile, utilisant le Collections.shuffle intégré:

List<Integer> positions = new ArrayList<Integer>(students); 
for (int number = 0; number < students; number++) 
    positions.add(number); 

Collections.shuffle(positions); 

for (Integer number : positions) 
    System.out.println(number);