在我的java猜谜游戏程序中无法弄清楚我做错了什么。计算机选择1到100之间的数字,并要求用户猜测它。用户被提示太低或太高,并要求再次猜测,直到他们做对了。我的问题是,当你猜对了数字时,它总是说太低了,但如果你再次输入相同的数字就会说正确。
package guessinggame;
import java.util.Scanner;
/**
*
* @author
*/
public class GuessingGame {
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
Scanner input = new Scanner (System.in);
int guesses; //number of users guesses
int housePick; //number the user must guess
int guess; //users guess
guesses = 0;
housePick = (int)((Math.random() * 100) +1 );
//sets housePick to random number from 1 to 100
System.out.println("I'm thinking of a number between 1 and 100") ;
//print "Im thinking of a nubmer between 1 and 100"
System.out.println("Can you guess what it is?");
//print "can you guess what it is"
System.out.println
("Enter a number from 1 to 100 (including 1 and 100)");
//prompt user to enter number
System.out.println("test " +housePick );
//Test: tells user the correct answer
do
{
guess = input.nextInt();
if (guess > housePick) //and if guess > housePick...
{
if ((guess - 10) <= housePick )
//and if guess is 10 numbers away from housePick...
{
System.out.println("Close, but too high. Try again.");
//print "close but too high, try again"
guesses = guesses+ 1 ;
}
else //if guess is not close and guess>housePick...
{
System.out.println ("Too high, try again.");
//then print "Too high, Try again"
guesses = guesses+ 1;
}
}
else //If guess<housePick
{
if ((guess + 10) >= housePick) //AND if guess is close to housePick
{
System.out.println ("close, but too low.") ;
//then print "close, but too low"
guesses = guesses + 1;
}
else//If guess isnt close to housePick and is less than housePick...
{
guesses = guesses+ 1;
System.out.println ("Too low.");//then print "too low"
}
}
}while (guess != housePick); //while guess doesnt = housePick...
guess = input.nextInt();
//save entered number as guess
guesses = guesses + 1;
System.out.println ("You win! It took you " + guesses + " guesses.");
//If guess = housePick print "Yout win! It took you (# of guesses)"
}
}
答案 0 :(得分:2)
else //If guess<housePick
上述情况你错了,相当于guess <= housePick
。它一定是
else if( guess < housePick)
此外,在housePick == guess
时执行以下代码块,因此无法执行guess = input.nextInt()
,您可以简单地说 You Win 。
}while (guess != housePick); //while guess doesnt = housePick...
// At this point, guess == housePick, why ask for input again????
// guess = input.nextInt();
//save entered number as guess
//guesses = guesses + 1;
答案 1 :(得分:1)
在while之后你还有一个额外的input.nextInt():
}while (guess != housePick); //while guess doesnt = housePick...
guess = input.nextInt();
//save entered number as guess
删除它
答案 2 :(得分:0)
让我们看看
Housepick = 87
guess = 87
if ((guess + 10) >= housePick) //AND if guess is close to housePick
{
System.out.println ("close, but too low.") ;
//then print "close, but too low"
guesses = guesses + 1;
}
hmm 87 + 10 IS大于87
然后它会中断do / while循环并再次提示