Java条件混乱? (初学者)

时间:2015-03-26 13:24:36

标签: java loops conditional-statements

这个项目的目的是制作一个Rock Paper Scissors游戏。我已成功制作它,但无论我尝试什么,我都无法循环。我试过了:

while (index = 0)
while (index < gamesCount)

然而,虽然我的索引是0而我的条件是while (index != 0),但它似乎是运行程序的唯一条件,但它不会循环。如何让我的游戏循环?

import java.util.Scanner;
import java.util.Random;
public class RockPaperScissors {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Random randomGen = new Random();
        //Variables
        String player1;
        int cpu;
        int start = 1;
        int end = 3;
        int index = 0;

        // 1 = Rock | 2 = Scissors | 3 = Paper
        //Code
        System.out.println("Welcome to Rock, Paper, Scissors!");
        while (index != 0) {
            System.out.print("Rock, Paper, or Scissors?: ");
            player1 = in.nextLine();
            cpu = randomGen.nextInt(3);
            System.out.println(cpu);

            if (player1.equals("Rock") && (cpu == 2)) {
                    System.out.println("You lose!");
            } else if (player1.equals("Rock") && (cpu == 1)) {
                    System.out.println("You win!");
            } else if (player1.equals("Rock") && (cpu == 0)) {
                System.out.println("Draw!");
            }

            // --------------------

            if (player1.equals("Scissors") && (cpu == 2)) {
                    System.out.println("Draw!");
            } else if (player1.equals("Scissors") && (cpu == 1)) {
                    System.out.println("You win!");
            } else if (player1.equals("Scissors") && (cpu == 0)) {
                    System.out.println("You lose!");
            }

            //---------------------

            if (player1.equals("Paper") && (cpu == 2)) {
                    System.out.println("You lose!");
            } else if (player1.equals("Paper") && (cpu == 1)) {
                    System.out.println("You win!");
            } else if (player1.equals("Paper") && (cpu == 0)) {
                    System.out.println("Draw!");
            }
        }
    }
}

3 个答案:

答案 0 :(得分:1)

两个错误:

while (index != 0);

这是整个循环。它会在{}区块的末尾(您没有)或在第一个区域结束;这是在声明之后。

但要纠正这个问题,它仍然不会循环:

int index = 0;

        // 1 = Rock | 2 = Scissors | 3 = Paper



        //Code
        System.out.println("Welcome to Rock, Paper, Scissors!");
        while (index != 0);

index = 0,所以(index!= 0)永远不会返回true。

答案 1 :(得分:1)

您的索引变量设置为0。 你的while循环说

while (index != 0);

这意味着,当索引不为0时,运行我的代码。问题是您的代码永远不会运行,因为您的索引值始终为0。 尝试将其更改为其他值(例如5),现在应该可以正常工作。

:)

答案 2 :(得分:1)

你的索引变量设置为0. while循环的条件是,如果index不等于0,则执行循环中的代码。由于索引等于0,因此循环中的指令不会被执行。此外,您将需要更新循环中的索引变量,以便在满足您要查找的条件时,代码将停止循环。 即:

int gamesPlayed = 0;
int gamesRequested = 3; // or get this from the user

while (gamesPlayed < gamesRequested){
    String player1Choice = in.nextLine();
    if(!"".equals(player1)){
    // your code
        gamesPlayed++;
    } else {
        System.out.print("Rock, Paper, or Scissors?: ");
    }
}