2015-08-26 2 views
1

Я создал простую программу для броска кубиков. Но цикл while не остановится, когда roll1 и roll2 равны. И сумма не складывается. Программы работают бесконечно, я должен остановить это. Пожалуйста помоги.Почему этот цикл не останавливается после roll1 и roll2?

Выход:

Roll #1: 1 
Roll #2: 2 
Total is : 3 
Roll #1: 4 
Roll #2: 1 
Total is : 3 
Roll #1: 4 
Roll #2: 4 
Total is : 3 
Roll #1: 2 
Roll #2: 5 
Total is : 3 
Roll #1: 4 
Roll #2: 4 
Total is : 3 
Roll #1: 0 
Roll #2: 2 
Total is : 3 
Roll #1: 4 
Roll #2: 3 
Total is : 3 

Исходный код:

import java.util.Scanner; 
import java.util.Random; 

public class App1 
{ 
    public static void main(String[] args) 
    { 
     Random r = new Random(); 

     int roll1 = 1+ r.nextInt(6); 
     int roll2 = 1+ r.nextInt(6); 
     int total = roll1 + roll2; 

     System.out.println("Heres comes the dice!"); 
     System.out.println(); 


     while (roll1 != roll2) 
     { 
      System.out.println("Roll #1: " + roll1); 
      System.out.println("Roll #2: " + roll2); 
      System.out.println("Total is : " + total); 

     } 
     System.out.println("Roll #1: " + roll1); 
     System.out.println("Roll #2: " + roll2); 
     System.out.println("Total is : " + total); 


    } 
} 
+5

После запуска цикла вы не изменяя значения. thats y бесконечно. – Shriram

ответ

3

Потому что внутри время цикла вы не получите новые значения:

while (roll1 != roll2) 
{ 
    System.out.println("Roll #1: " + roll1); 
    System.out.println("Roll #2: " + roll2); 
    System.out.println("Total is : " + total); 

    roll1 = 1+ r.nextInt(6); 
    roll2 = 1+ r.nextInt(6); 
    total = roll1 + roll2; 
} 

Первый раз вы входите в то время цикла roll1 и roll2 имеет случайное значение, но если вы не измените эти значения с помощью новые строки, которые я добавил, поэтому вы будете всегда зацикливаться на тех же самых значениях, которые у вас были.

О значениях roll1 и изменения roll2, что не имеет смысла для меня, в моем компьютере ваш результат код:

Launch1

Total is : 7 
Roll #1: 1 
Roll #2: 6 
Total is : 7 
Roll #1: 1 
Roll #2: 6 
Total is : 7 
Roll #1: 1 
Roll #2: 6 
Total is : 7 

Launch2

Total is : 8 
Roll #1: 5 
Roll #2: 3 
Total is : 8 
Roll #1: 5 
Roll #2: 3 
Total is : 8 
Roll #1: 5 
Roll #2: 3 
Total is : 8 
+0

Извините (раньше я не видел вашего ответа), но я думаю, что вы должны поместить свою полную переменную в цикл (я тоже забыл xD). –

+0

согласен и исправлен @ Error404, спасибо;) –

+0

Добро пожаловать;) –

1

Вы хотите покататься до тех пор, пока рулоны кости не станут одинаковыми, что означает:

  1. Произвольные значения должны быть созданы внутри петля. В противном случае либо цикл вообще не выполняется, либо цикл представляет собой бесконечный цикл.
  2. Использование do-while loop вы получите более удобный код.
Random r = new Random(); 

System.out.println("Heres comes the dice!"); 
System.out.println(); 
int roll1, roll2; 
do 
{ 
    roll1 = 1+ r.nextInt(6); 
    roll2 = 1+ r.nextInt(6); 
    int total = roll1 + roll2; 
    System.out.println("Roll #1: " + roll1); 
    System.out.println("Roll #2: " + roll2); 
    System.out.println("Total is : " + total); 
} while (roll1 != roll2); 
Смежные вопросы