2016-11-03 3 views
0

Я пытаюсь получить ролик для кубиков, и у меня возникают трудности с добавлением петли где-то, чтобы программа не уходила после одного рулона. Я хочу спросить у пользователя, хотят ли они рулон, и он катит, говоря «y». Я хочу закончить программу, задавая пользователю один и тот же вопрос, но он заканчивается «п»Я пытаюсь добавить петлю в мою программу ролика в кости.

/* 
    Natasha Shorrock 
    Assignmnt A6 
    11/07/16 
    */ 
    package diceroller; 
    import java.util.Random; 
    import java.util.Scanner; 

    public class DiceRoller { 
     public static void main(String []args) { 
      System.out.println(" Do you want to roll the dice? "); 
      Random dice = new Random(); 
      Scanner input = new Scanner(System.in); 
      int faces; 
      int result; 

      System.out.println("Dice Roller\n"); 
      System.out.println("How many faces does the dice have?"); 
      faces = input.nextInt(); 
      result = dice.nextInt(faces) + 1; 
      System.out.println("\nThe dice rolled a " + result); 
     }//Dice Roller 
    }//class DiceRoller 
+0

Возможно, вы захотите удалить комментарии заголовка в своем коде. Кроме того, цикл «do-while» решает вашу проблему. –

+5

Существует хороший учебник по теме: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html – bradimus

ответ

0

Вы должны прочитать ввод после следующего выражения:

System.out.println(" Do you want to roll the dice? "); 

Чтобы получить вход пользователей звоните: input.nextLine();. После этого петля, пока входной сигнал "y". Если вход пользователя не равен "y", то while-loop прекращается.

Цикл while(condition) является excuted до тех пор, пока условие является true

Оператор в то время как постоянно выполняет блок операторов, а конкретное условие истинно. The while and do-while Statements

Для примера рассмотрим следующий код:

public static void main(String[] args) { 
    Random dice = new Random(); 
    Scanner input = new Scanner(System.in); 
    System.out.println("Do you want to roll the dice? (y: yes/q: to quit)"); 
    String answer = input.nextLine(); // reading the input 

    // we check if the answer is equals to "y" to execute the loop, 
    // if the answer is not equals to "y" the loop is not executed 
    while ("y".equals(answer)) { 
     System.out.println("Dice Roller"); 
     System.out.println("How many faces does the dice have?"); 
     int faces = input.nextInt(); 
     int result = dice.nextInt(faces) + 1; 
     input.nextLine(); // to read the newline character (*) 
     System.out.println("The dice rolled a " + result); 
     System.out.println("Do you want to roll the dice? (y: yes/q: to quit)"); 
     answer = input.nextLine(); 
    } 
} 

Чтобы узнать больше о время и делать-то время механизмы, пожалуйста, посетите этот toturial

(*) Для того, чтобы понять использование nextLine() после звонка в следующийИнт(), пожалуйста, посетите Scanner is skipping nextLine() after using next(), nextInt() or other nextFoo() methods

+0

Есть много, чтобы добавить к этому ответу. Что такое 'while'? Поскольку ОП, похоже, изучает JAVA. Зная, что текущий ответ на этот вопрос является целым числом, это может быть проблемой для использования 'nextLine()' – AxelH

+0

Я хотел бы добавить часть после System.out.println («Вы хотите перевернуть кости?») ; у которого есть цикл while, который начинает программу, произнося «y» и заканчивая ее, произнося «n» –

+0

, пожалуйста, рассмотрите объяснение цикла do-while, поскольку OP, похоже, является новичком. –

0

A-do - это очень хороший вариант. Другой способ сделать это - использовать цикл while с коммутатором или предпочтительно IF/ELSE IF. Возможно, что-то вроде ниже. Это всего лишь предложение.

boolean checkForExit = false; 
while(checkForExit != true) { //while checkForExit does not equal true (therefore false) continue.. 

    System.out.println("Do you want to roll the dice?"); 
    String answer = input.next(); //get char input from user. 

    if(answer.toLowerCase().equals("y")) { //if 'y' then do this 
    //ask user for number of faces on dice and roll 
    } else { // otherwise end the program 
     //set isTrue to true to exit while loop. ends program 
     isTrue = true; 
    } 
} 
+0

, пожалуйста, рассмотрите возможность использования input.nextChar(). В противном случае используйте equals(), чтобы скопировать термины. Также ваш атрибут isTrue является анонимным, пожалуйста, измените его имя. Кроме того, программа будет зацикливаться, если вход является чем-то помимо «y» или «n», потому что вы jusing else, если вместо обычного else –

+0

Так где же я буду вставлять логические и инициальные? –

+0

вы использовали бы это в основном методе –

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