2014-02-18 3 views
0

моя программа не будет делать то, что мне нужно, и я застрял в этой проблеме в течение шести часов. Он подсказывает пользователю, сколько раз они хотели бы бросить монету, программа подсчитывает, сколько головок и хвостов было брошено, и выплескивает общие головы и хвосты, а также процент, который скатывался как голова. моя проблема в том, что цикл просто заканчивается, когда он проходит первый раз. он просто останавливается и не попросит пользователя выбрать другой номер или нажать 0, чтобы выйти из программы и вернуться в главное меню, как я могу это исправить? Также как я могу получить возможность вернуться в другой цикл. Я пробовал метод break, и он не работает для меня. Я не знаю, что я действительно потерян. Как я могу это сделать, чтобы этот цикл продолжал бросать монету и все еще спрашивать у пользователей, сколько раз они хотят ее бросить? В то же время позволяя им просто нажать 0 и выйти из этого цикла, чтобы вернуться в главное меню? Я не размещал этот код здесь, но это цикл while с различными дополнительными параметрами/играми.Как продолжить цикл java

if (anotherScanner.hasNext("t|T")) { 

    c = anotherScanner.next(); 
    usersSelection = true; 
    System.out.println(""); 
    System.out.println("COIN TOSS SIMULATOR"); 
    System.out.println(""); 
    System.out.println("Enter 0 to quit. How many tosses?"); 

    Random rand = new Random(); 
    float headsCount = 0; 
    float tailsCount = 0; 
    Scanner scanMan = new Scanner(System.in); 
    int numero = scanMan.nextInt(); 
    boolean headsOrTails; 

    for (int j=0;j < numero;j++) { 
     if (numero == 0) { break; } 
     headsOrTails = rand.nextBoolean(); 

     if (headsOrTails == true) { 
      headsCount++; 
     } else { 
      tailsCount++;    

      System.out.println(headsCount + " heads and " + tailsCount + " tails means " + (headsCount/(headsCount+tailsCount)*100 + "% were heads")); 
     } 
    } 
} 

ответ

0

Код ввода пользователя также должен быть в цикле.

0
System.out.println("\ncontinue to inner when i is 2 and j is 2:"); 
for (int i = 1; i <= 3; i++) { 
    here4: for (int j = 1; j <= 3; j++) { 
     if ((i == 2) && (j == 2)) { 
      System.out.print("[continue to inner]"); 
      continue here4; 
     } 
     System.out.print("[i:" + i + ",j:" + j + "]"); 
    } 
} 
0

вам нужен цикл для обволакивают кода: в то время (с = 0!)

+0

Этот ответ немного короткий. Вы могли бы написать его немного более конкретным и, возможно, показать, где добавить этот цикл while. –

0

Ваш код намерен всегда ввести «для» цикла, а затем, если numero == 0, выходит из цикла.

for (int j = 0; j < numero; j++) { 
    if (numero == 0) { 
     break; 
    } 
    ... 
} 

Однако, если Numero == 0, условие for - j < numero является ложным, так что исполнение не входит в цикл вообще. Так что break никогда не запустится.

Вы, вероятно, хотел что-то подобное:

if(numero !=0) { 
    for (int j = 0; j < numero; j++) { 
     ... 
    } 
} 

... хотя, как здесь написано, то if не имеет никакого значения, потому что с numero==0 петля for еще итерация ноль раз.

Однако ваш println() находится внутри цикла - он выполняется каждый раз, когда «хвосты» перебрасываются. Я полагаю, вы действительно хотели Println() произойдет один раз, после того, как все монеты были кинули:

if(numero !=0) { 
    for (int j = 0; j < numero; j++) { 
     ... 
    } 
    System.out.println(...); 
} 

Вы обнаружите, что ваш код становится намного понятнее, если вы разбить его на более методы. Вместо того, чтобы помещать ваш цикл броска монеты в оператор if (это называется inline), поместите его в свой собственный метод и поместите вызов метода в цикл for. Таким образом, у вас заканчивается код:

// Get input; play game until input is zero. 
void playCoinTossGames(Scanner scanner) { 
    int input = promptAndGetInt(scanner); 
    while(input != 0) { 
     playOneCointossGame(input); 
     int input = promptAndGetInt(scanner); 
    } 
    // note two calls to get input above. This is called a 
    // "read-before-read-while" loop 
} 

// Print a prompt, then scan input for an integer 
int promptAndGetInt(Scanner scanner) { 
    System.out.println("How many tosses? (0 to exit)"; 
    return scanner.nextInt(); 
} 

// Toss numberOfTosses times, then report the % of heads. 
void playOneCointossGame(int numberOfTosses) { 
    for(int i=0; i<numberOfTosses; i++) { 
     // Toss a coin and record result 
    } 
    System.out.println(...); // summary of results 
}  
Смежные вопросы