我尝试创建一个简单的简单公牛和奶牛游戏(https://en.wikipedia.org/wiki/Bulls_and_Cows)。这场比赛是为了我的学校项目。我的知识是有限的,所以我需要使用循环,IF-else结构和其他简单的函数来制作游戏。
编写的代码在某种程度上有效 - 生成代码并理解该数字被引用,但并未表明有多少牛和公牛在错误的假设中。
如果有人指出我正确的方向,我会很高兴:)提前致谢
import java.util.Random;
import java.util.Scanner;
public class BCgame{
public static void main(String[] args){
Random r= new Random();
int number= 0;
int trynum = 0;
while(uniq(number= (r.nextInt(9000) + 1000)));
String targetStr = number +"";
boolean game = true;
Scanner input = new Scanner(System.in);
do{
System.out.println(number);
int bulls = 0;
int cows = 0;
System.out.print("Guess a number: ");
int guess;
guess = input.nextInt();
if (uniq(guess) || guess < 1000) continue;
trynum++;
String guessStr = guess + "";
for(int i= 0;i < 4;i++){
if(guessStr.charAt(i) == targetStr.charAt(i)){
bulls++;
}else if(targetStr.contains(guessStr.charAt(i)+"")){
cows++;
}
}
if(bulls == 4){
game = false;
}else{
System.out.println(cows+" Cows and "+bulls+" Bulls.");
}
}while(game);
System.out.println("You won after "+trynum+" guesses!");
}
public static boolean uniq(int num){
String checknum = num+"";
if(checknum.charAt(0) == checknum.charAt(1)) return false;
else if(checknum.charAt(1) == checknum.charAt(2)) return false;
else if(checknum.charAt(2) == checknum.charAt(3)) return false;
return true;
};
}
答案 0 :(得分:1)
您已经使用Rosetta示例(http://rosettacode.org/wiki/Bulls_and_cows#Java)走了很长一段路。继续努力吧。
实验是学习语言的关键,因此请确保您了解每条线的作用并测试结果。
另外,了解如何使用调试工具查看哪些行的行为与您期望的不同,然后尝试理解原因。
如果您遇到特定声明,请发布。否则,这个问题太不明确了,特别是当罗塞塔有一个适合你的工作案例时。