在岩石剪刀循环游戏中的无限循环

时间:2016-11-20 05:26:22

标签: java infinite-loop

我正在努力在我的游戏中实现while循环,因为它总是给我一个无限循环。这个想法是继续游戏,除非用户键入“-1”

    // declare variables
    int player, computer;
    int counter = 0;
    // player input
    System.out.println("Rock, Paper, Scissors!");
    System.out.print("Enter 0 for paper, 1 for Scissors, or 2 for Rock (-1 to quit) : ");
    player = sc.nextInt();
    while (player != -1) {

        // switch statement for player
        switch (player) {
        case 0:
            System.out.println("Player picks Paper");
            break;
        case 1:
            System.out.println("Player picks Scissors");
            break;
        case 2:
            System.out.println("Player picks Rock");
            break;
        case -1:
            System.exit(-1);
            break;
        default:
            System.out.println("Invalid input");
        }

        // generate a random number for computer
        Random randomGen = new Random();
        computer = randomGen.nextInt(3);

        // switch statement for computer
        switch (computer) {
        case 0:
            System.out.println("Computer picks Paper");
            break;
        case 1:
            System.out.println("Computer picks Scissors");
            break;
        case 2:
            System.out.println("Computer picks Rock");
            break;
        default:
        }

        // output for each condition
        if (player == 2 && computer == 1)
            System.out.println("Player Wins!");
        else if (player == 1 && computer == 0)
            System.out.println("Player Wins!");
        else if (player == 0 && computer == 2)
            System.out.println("Player Wins!");
        else if (computer == 1 && player == 0)
            System.out.println("Computer Wins!");
        else if (player == 0 && computer == 2)
            System.out.println("Computer Wins!");
        else if (player == 1 && computer == 2)
            System.out.println("Computer Wins!");
        else
            System.out.println("Draw");
        sc.close();
    }

1 个答案:

答案 0 :(得分:1)

您永远不会更新player值。将player = sc.nextInt()添加到循环体的末尾。 ,执行类似

的操作
int player;
while ((player = sc.nextInt()) != -1) {

,我相信你也应该删除对sc.close();的号召