我在java中编号猜测程序错误

时间:2015-04-20 23:45:24

标签: java

我正在用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."); 
            }
        }
    }
}

2 个答案:

答案 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))