【发布时间】:2015-04-22 13:57:12
【问题描述】:
自从我在我的小石头剪刀布游戏中添加了 while 循环以来,它一直给我数字 1。
package steenpapierschaar1;
import java.util.Scanner;
/**
*
* @author T
*/
public class SteenPapierSchaar1 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int rock = 1 ; // waarde van Rock
int paper = 2; // waarde van paper
int scissor = 3;// waarde van scissor
int AI = 1 + (int) (Math.random() *3);// maakt int AI een random getal nog niet af moet een range in komen
Scanner KeyBoard = new Scanner (System.in);// naam scanner input
boolean playing = true;
String answer, answer2 = null;
while(playing = true){
System.out.println("choose 1 for rock, 2 for paper and 3 for scissor"); // string met keuze voor User
int UserChoice = KeyBoard.nextInt();// waarde van UserChoice
if (AI == 1 && UserChoice == 2 || AI == 2 && UserChoice == 3 || AI == 3 && UserChoice == 1) { // als de speler elke keer 1x hoger heeft wint hij de ronde
System.out.println("You WIN");// outprint met dat je gewonnen hebt en wat de computer doet
if (AI == 1)
System.out.println("The Computer did rock");
if (AI == 2)
System.out.println("The Computer did paper");
if (AI == 3)
System.out.println("The Computer did scissors");
}
else if (AI == 1 && UserChoice == 1 || AI == 2 && UserChoice == 2 || AI == 3 && UserChoice == 3) {
System.out.println("Draw");
if (AI == 1)
System.out.println("The Computer did rock");
if (AI == 2)
System.out.println("The Computer did paper");
if (AI == 3)
System.out.println("The Computer did scissors");
}
else if (AI == 1 && UserChoice == 3 || AI == 2 && UserChoice == 1 || AI == 3 && UserChoice == 2){
System.out.println("You Lose");
if (AI == 1)
System.out.println("The Computer did rock");
if (AI == 2)
System.out.println("The Computer did paper");
if (AI == 3)
System.out.println("The Computer did scissors");
}
}
}
}
【问题讨论】:
-
好吧,我先使用
java.util.Random而不是Math.random()。然后我会修复所有变量等以遵循 Java 命名约定,并整理缩进... -
看看你在哪里给
AI赋值——你只在循环之前这样做。 (顺便说一下,当您有很多与&&和||相关的条件时,我强烈建议您添加括号,以使分组非常清晰。您还应该尝试重构代码......相同的代码行显示计算机的移动三遍...) -
我建议使用 enum 代替 int 和 switch 代替 ifs,check
-
另外,你的while循环:while(playing = true),你基本上是赋值play而不是比较,用==比较boolean,不过这种情况下while(playing)就足够了。