2015-04-20 29 views
0

我正在Java中進行數字猜測遊戲,程序在1到10範圍內顯示一個數字,並且您必須猜測下一個數字是低於還是高於當前的一個。但似乎有一個問題,當我得到它正確的我應該得到一個點添加到我的分數,但相反,它只是當我得到猜測錯誤的方法。我的號碼猜測程序錯誤在java中

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

除了字符串比較錯誤,不要修改'rnd'或'rnd2' **內**循環。 –

+0

不修改'rnd'或'rnd2'是什麼意思? – Kevin

回答

1

您正在等於Strings使用==。這隻適用於等價基元的值。查看this post以獲得更清楚的理解。

==是一個基準比較,即,兩個對象指向同一存儲器位置

.equals()計算爲值中的對象的比較

代替

if(in == lo) 

你想要

if(in.equals(lo)) 
0

您的字符串比較正在使用==運算符來檢查對象是否相等。您想要使用equals方法來代替值相等。

更換

if(in == lo) 

if(in.equals(lo)) 

同樣適用於

if(in == hi) // should be if(in.equals(hi))