如何检查循环java中的条件?

时间:2015-07-05 02:56:00

标签: java loops if-statement conditional-statements

首先我是java的新手,我想我会先制作一些较小的程序来帮助自己学习。所以我开始了“不要踩白色瓷砖”#34;游戏和我打印每行打印但我需要检查用户输入是否等于瓷砖。我不确定如何解决这个问题,因为我尝试了很多东西而且我在路障。

提前帮助和感谢。

import java.util.Scanner;

public class DontStepTheWhiteTile {

    public static void main(String[] args) {

        //Variables
        int userInput = 0, numberEntered = 0, tileNumber;
        char start;

        //Scanner
        Scanner scanner = new Scanner(System.in);

        //Loop for tiles
        if (userInput == 0) {
            System.out.print("Enter the character 's' to begin: ");
            start = scanner.nextLine().charAt(0);
            if (start == 's') {
                userInput = 1;
            }
        }

        //Starts the time
        long timeStart = System.currentTimeMillis();

        //Makes the tiles
        if (userInput == 1){
            for (int i = 0; i <= 25; i++) {
                int tile = (int) (3 * Math.random() + 1);
                if (tile == 1){
                    System.out.print("1 | X | X = ");
                    numberEntered = scanner.nextInt();
                }
                else if (tile == 2){
                    System.out.print("X | 2 | X = ");
                    numberEntered = scanner.nextInt();
                }
                else {
                    System.out.print("X | X | 3 = ");
                    numberEntered = scanner.nextInt();
                }
            }
        }

        //Calculates the ending time
        long timeEnd = System.currentTimeMillis();
        System.out.println("It took you " 
             + ((timeEnd - timeStart) / 1000) + " seconds");
    }
}

1 个答案:

答案 0 :(得分:1)

您永远不会测试numberEntered,因此用户输入不会更改代码的行为。如果您明确表达了您想要的行为,那么回答您的问题会更容易。既然你没有我被迫猜测。

如果您希望游戏在第一次错过时结束,则break循环中的for将起作用。

if (numberEntered != tile) {
    System.out.println("You lose");
    break;
}

如果你希望游戏以3个未命中结束,那么在break之前测试的累积整数将起作用。

if (numberEntered != tile) {
    misses++;
}
if (misses >= 3) {
    System.out.println("You lose");
    break;
}

无论哪种方式,所有这些代码都可以在当前for结构之后的if-else循环结束时发送。

也可以在numberEntered = scanner.nextInt();之后移动if-else,因为它在每种情况下都是相同的。