首先我是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");
}
}
答案 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
,因为它在每种情况下都是相同的。