2013-09-12 3 views
0

Я делаю симулятор, чтобы узнать, сколько раз генератор случайных чисел принимает «рулон» змеиных глаз. Программа просто повторяетОшибка программы Java Snake Eyes

Not snake eyes yet :(

Вот код:

import java.util.Random; 

public class SnakeEyes { 

public static void main(String[] args) { 
    Random myRandom = new Random(); 
    int die1 = 0, tries = 0, die2 = 0; 

    System.out.println("Welcome to SEO (Snake Eyes Operator)!"); 
    System.out.println("How many rolls will it take you to get to snake eyes! "); 

    die1 = myRandom.nextInt(6) + 1; 
    die2 = myRandom.nextInt(6) + 1; 

    while (die1 + die2 != 2) { 
     System.out.println("Not snake eyes yet :("); 
     tries = +1; 

    } 

    System.out.print("You have rolled snake eyes! "); 
    System.out.print("Congratulations! It only took you "); 
    System.out.print(tries); 
    System.out.print("!"); 

} 

} 

Я считаю, что это проблема, с открытым контуром, но я не уверен. Благодаря!

ответ

5

Когда вы используете цикл while, вы должны обновить проверенное вами значение или цикл никогда не остановится.

Вам необходимо обновить значения die1 и die2 значений внутри цикла.

+0

Я добавил die1 = и die2 = в цикл while (скопируйте пасту после system.outprint.ln в цикле while) и обновите try = +1 до попыток + = 1. Это все равно дает мне бесконечное петля. –

+0

Вы можете добавить некоторые отпечатки, чтобы отлаживать их самостоятельно. Как насчет печати значений die1 и die2 внутри цикла? – BobTheBuilder

+0

исправил это. Благодаря! –

0

Вам нужно назначить myRandom.nextInt(6) + 1;внутри петли while, в противном случае он будет перебирать на снова и снова проверять одни и те же значения.

2

После того, как условие while (die1 + die2 != 2) не получилось, оно перейдет в бесконечный цикл и должно быть условие разрыва цикла. попробовать это (сломает цикл после 10 итераций):

while (die1 + die2 != 2) {  
    System.out.println("Not snake eyes yet :("); 
    die1 = myRandom.nextInt(6) + 1; 
    die2 = myRandom.nextInt(6) + 1; 
    tries += 1; 
    if(tries==10) 
     break; 
} 

и заменить tries = +1; с tries += 1;

0
die1 + die2 

не меняется и, следовательно, цикл будет выполняться вечно, если соблюдено следующее условие:

while (die1 + die2 != 2) 

Поэтому вам, возможно, придется поместить логику в цикл while для логического обновления значений die1 и/или die2.

Смежные вопросы