我正在用Java编写一个数字猜谜游戏,程序在1到10范围内显示一个数字,你必须猜测下一个数字是低于还是高于当前数字。但是当我弄清楚它似乎有一个问题我应该在我的分数中添加一个点,但它只是在我猜错时的方法。
class csjava
{
public static void main(String[] args)
{
Random dom = new Random();
Random dom2 = new Random();
Scanner input = new Scanner(System.in);
int score = 0;
System.out.println("Guess if next number will be higher or lower Score:" + score);
int rnd = dom.nextInt();
int rnd2 = dom2.nextInt();
String lo = "lower";
String hi = "higher";
if(score ==10)
{
System.out.println("You win!");
}
while(score != 10)
{
System.out.println(dom.nextInt(10-1)+1);
String in = input.nextLine();
if(in == lo)
{
System.out.println(dom2.nextInt(10-1)+1);
if(rnd2 < rnd)
{
score = score + 1;
}
}
else
{
System.out.println("Nope, try again.");
}
if(in == hi)
{
System.out.println(dom2.nextInt(10-1)+1);
if(rnd2 > rnd)
{
score = score + 1 ;
}
else
{
System.out.println("Nope, try again.");
}
}
}
}
答案 0 :(得分:1)
您使用Strings
等同==
。这仅适用于等同基元的值。查看this post以获得更清晰的理解。
==
是参考比较,即两个对象都指向相同的内存位置
.equals()
评估对象中值的比较
而不是
if(in == lo)
你想要
if(in.equals(lo))
答案 1 :(得分:0)
您的字符串比较使用==运算符来检查对象是否相等。您希望使用equals方法来检查值的相等性。
替换
if(in == lo)
与
if(in.equals(lo))
同样适用于
if(in == hi) // should be if(in.equals(hi))