2013-02-27 344 views
2

我收到一個語法錯誤,我找不出原因。我正在編程課程的介紹,所以我的知識非常有限。這是一個我必須做的項目和我到目前爲止的代碼。我只是想測試它,看看我是否在正確的道路上,但我不能。任何幫助將非常感謝,所以我至少可以看到我的下一個問題將是哈哈。while循環中的語法錯誤

import java.util.*; 

public class project2 { 

    public static void main(String[] args) { 
     Scanner in = new Scanner (System.in); 
     System.out.println("Welcome, I am thinking of a number between 1-100. Take a guess!"); 
     System.out.print("Please enter your number: "); 
     int guess = in.nextInt(); 
     Random r = new Random(101); 
     int counter = 0; 
     int totalcount = 6; 
     While (counter != totalcount) {  // being told to insert ";" and I have no clue why 
      if (guess < r) { 
       System.out.print("You guessed " + guess); 
       System.out.println("Too Low"); 
      } else if (guess > r) { 
       System.out.print("You guessed " + guess); 
       System.out.println("Too High"); 
      } else (guess = r) { 
       System.out.print("You guessed " + guess); 
       System.out.println("YOU'RE PSYCHIC!"); 
      } 
      counter++; 
     } 
    } 
} 
+0

[家庭作業標籤已經過時了。(http://meta.stackexchange.com/questions/147100/the-homework-tag-is-now-officially-deprecated) – 2013-02-27 17:39:03

回答

6

你有錯誤的大寫While。它應該是while(全部小寫)。

請參閱while的文檔。

但是,您的代碼還存在其他一些問題。

首先,如果您測試了一個數字不大於或小於它必須的值,那麼根據定義是相等的。因此,你可以改變

else (guess = r) { 

else 

這是幸​​運,你作爲guess = r不會測試是否相等。相反,它會將r的值指定爲guess。另外,因爲else (condition)是語法錯誤。

其次您正在嘗試的int在此行比作Random

if (guess < r) // r is of type Random, guess is of type Int. 

你真正應該做的是使用你的Random獲得一個int,如:

Random rnd = new Random(); 
int r = rnd.nextInt(); 

if (guess < r) // This is now valid. 

第三你已經給你的隨機數發生器加上了101.這意味着它總是會返回相同的順序數字。這可能是你想要的,但是,如果不是,你可以只使用paramaterless構造與當前的播種它以毫秒爲單位

Random rnd = new Random(); 
2

不要大寫單詞「而」。案例在Java中非常重要。

+0

謝謝非常感謝 – Pmike86 2013-02-27 16:30:29

3
else (guess = r) { 

將條件改變爲註釋。

else { // (guess == r) 
+0

非常感謝 – Pmike86 2013-02-27 16:32:41

0

guess = r是一個賦值而不是比較。在這種情況下,比較是不必要的,因爲它是默認情況,但爲了將來參考,guess == r是進行比較的正確方式(假設猜測是int或其他原語)

1

一堆問題。參見下面的修復。

  1. 不要利用「而」
  2. 如果你做了別的,但想檢查另一個條件,做一個「否則,如果(...)'
  3. 您無法將int與'Random'類型的變量進行比較。相反,保存關閉Random.nextInt()並比較
  4. 當比較時,確保如果你想'等於'你使用'=='而不是'='。後者是賦值運算符,而'=='是比較運算符。

    import java.util.Random; 
    
    import java.util.Scanner; 
    
    public class project2 { 
    public static void main(final String[] args) { 
    
        Scanner in = new Scanner(System.in); 
    
        System.out.println("Welcome, I am thinking of a number between 1-100. Take a guess!"); 
    
        System.out.print("Please enter your number: "); 
    
        int guess = in.nextInt(); 
    
        Random r = new Random(101); 
        int actual = r.nextInt(); 
    
        int counter = 0; 
    
        int totalcount = 6; 
    
        while (counter != totalcount) { // being told to insert ";" and I have no clue why 
    
         if (guess < actual) { 
    
          System.out.print("You guessed " + guess); 
    
          System.out.println("Too Low"); 
         } 
    
         else if (guess > actual) { 
    
          System.out.print("You guessed " + guess); 
    
          System.out.println("Too High"); 
         } 
    
         else if (guess == actual) { 
    
          System.out.print("You guessed " + guess); 
    
          System.out.println("YOU'RE PSYCHIC!"); 
    
         } 
    
         counter++; 
        } 
    
    } 
    

    }

0

變化

Random r = new Random(101); 

Random random = new Random(); 
int r = random.nextInt(100) + 1; 

你需要一個int來比較的猜測。你正在使用一個Random這是一個隨機數字發生器。 Random方法nextInt(int i)返回一個介於0(含)和i之間的數字。

0

找到三樣東西

1)儘管錯誤地大寫

2)R是錯誤的類型與整數比較,這是你的意思是 「隨機」

3)的一個實例==和不是=

我發現所有這些錯誤通過加載到Eclipse的程序。我建議你找一個類似的編輯來幫助解決這些問題!

希望這有助於