我是一名正在使用java的学生,我很难编写高低猜谜游戏。我不能使用循环或"而#34;码。有什么想法吗?这就是我现在所拥有的:
public class FinalProject1
{
public static void main(String [] args)
{
System.out.println("Number Guessing Game 1-1000\nGuess a number");
guess();
}
public static int random()
{
int x = (int)(1000*Math.random() + 1);
return x;
}
public static void guess()
{
int num = random();
int tries = 0;
Scanner keyboard = new Scanner(System.in);
String inputString = keyboard.nextLine();
int input = Integer.parseInt(inputString);
if (input > num)
{
System.out.println("Guess a higher number");
inputString = keyboard.nextLine();
}
else if (input < num)
{
System.out.println("Guess a lower number");
inputString = keyboard.nextLine();
}
else if (num == input)
{
System.out.println("You Win");
}
}
}
答案 0 :(得分:-1)
首先,你的逻辑是有缺陷的。如果=INDEX(Sheet2!$I:$I,AGGREGATE(15,6,ROW(Sheet2!$I$2:$I$6)/(ISNUMBER(SEARCH(" " & Sheet2!$I$2:$I$6 & " "," " & A2 & " "))),1))
则用户猜到太高,需要猜测较低数字。
其他人建议使用递归,这是你的问题的常见解决方案,而且很可能是你需要做的,因为你可能刚刚学会了递归。
但是,既然我喜欢相反,我会通过开始一个新的线程来做到这一点:
input > num
答案 1 :(得分:-1)
一些事情..
您需要使用递归才能在没有任何循环的情况下产生预期的行为。
public static void main(String [] args)
{
System.out.println("Number Guessing Game 1-1000\nGuess a number");
int num = random();
Scanner keyboard = new Scanner(System.in);
guess(keyboard, num);
}
public static int random()
{
int x = (int)(1000*Math.random() + 1);
return x;
}
public static void guess(Scanner keyboard, int goal)
{
String inputString = keyboard.nextLine();
int input = Integer.parseInt(inputString);
if (input < goal)
{
System.out.println("Guess a higher number");
guess(keyboard, goal);
}
else if (input > goal)
{
System.out.println("Guess a lower number");
guess(keyboard, goal);
}
else if (input == goal)
{
System.out.println("You Win");
}
}
基本上发生的事情是我们得到他们的回复并检查它是否&gt;或者&lt;结果,告诉他们,并立即再次调用guess()
方法,以便重复此过程,直到他们做对了。
在开始时绕过递归可能相当困难,只是继续练习