如何用用户输入开始和结束循环?

时间:2015-07-10 15:16:29

标签: java loops

我无法弄清楚如何提示允许用户输入数字或字符来开始或结束循环的问题。

以下是代码

import java.util.Scanner;

public class diceRoller{
    public static void main(String[] args){     

        Scanner keyboard = new Scanner(System.in);

        int score;
        int sum=0;
        int roll1 = genRanInRange(1, 6);
        int roll2 = genRanInRange(1, 6);
        int roll3 = genRanInRange(1, 6);
        System.out.println("Your rolls were: " + " " + roll1 + " " + roll2 + " " + roll3);      
            if (roll1 == roll2 || roll2 == roll3 || roll1 == roll3){ // start of first loop

                System.out.println("You had 2 matching rolls! You gain 50 points.");
                score = 50;
                sum += score;
                if (roll1 == roll2 && roll2 == roll3 && roll1 == roll3){ // nested loop

                int rollSum = roll1 + roll2 + roll3;
                    if (rollSum == 18){ // nested loop 2

                    System.out.println("You had 3 matching 6's! You gain 500 points.");
                    score = 500;                        
                    sum += score;   
                    } // end nested loop 2

                } // end nested loop

            } // end of first loop

            else { 
                System.out.println("Sorry, you had 0 matching die.");
                score = 1;
                sum -= score;
            }
                System.out.println("Your score was: " + sum);   

            if (sum > 0){
                System.out.println("Would you like to continue?");
                }

            else{

                System.out.println("You are out of points. Would you like to restart?");
                }

    } // end Main

    public static int genRanInRange(int start, int end)
    {
        return (int)(Math.random()*(end-start+1.0)) + start;
    } // end genRanInRange

} // end Dice Roller

2 个答案:

答案 0 :(得分:0)

这应该可以解决问题

System.out.print("Would you like to continue? Y/N: ");
String UserResp = scanner.nextLine();

将其余代码放入while循环中。 并且在开头将一个布尔值定义为第一个循环的true,然后将UserResp与Y或N进行比较以设置布尔值。

答案 1 :(得分:0)

以下是可行的代码:

import java.util.Scanner;

public class DiceRoller{
    public static void main(String[] args){     

        Scanner keyboard = new Scanner(System.in);

        int score;
        int sum=0;
        char ans='y'; 
        while(ans=='Y'||ans=='y'){ //loop while user says Y 
            int roll1 = genRanInRange(1, 6);
            int roll2 = genRanInRange(1, 6);
            int roll3 = genRanInRange(1, 6);
            System.out.println("Your rolls were: " + " " + roll1 + " " + roll2 + " " + roll3);      
            if (roll1 == roll2 || roll2 == roll3 || roll1 == roll3){ // start of first loop
                System.out.println("You had 2 matching rolls! You gain 50 points.");
                score = 50;
                sum += score;
                if (roll1 == roll2 && roll2 == roll3 && roll1 == roll3){ // nested loop
                int rollSum = roll1 + roll2 + roll3;
                    if (rollSum == 18){ // nested loop 2

                    System.out.println("You had 3 matching 6's! You gain 500 points.");
                    score = 500;                        
                    sum += score;   
                    } // end nested loop 2

                } // end nested loop

            } // end of first loop

            else { 
                System.out.println("Sorry, you had 0 matching die.");
                score = 1;
                sum -= score;
            }
                System.out.println("Your score was: " + sum);   

            if (sum > 0){
                System.out.println("Would you like to continue?(Y/N) ");
                    ans=keyboard.next().charAt(0);
                }
            else{
                System.out.println("You are out of points. Would you like to restart?(Y/N) ");
                ans=keyboard.next().charAt(0);
            }

        }
        keyboard.close(); //Don't forget to close sccaner. 
    } // end Main

    public static int genRanInRange(int start, int end)
    {
        return (int)(Math.random()*(end-start+1.0)) + start;
    } // end genRanInRange

} // end Dice Roller

我将班级的大小写从 diceRoller 更改为 DiceRoller。

  

班级名称应始终包含第一个字母 CAPITALIZED '

还有一件事:

  

不要忘记关闭扫描仪。