2011-12-15 58 views
4

我正在做的書「Java如何編程」練習。我應該做一個模擬投幣的應用程序。我應該做一個方法(翻轉),隨機返回硬幣的一面。我希望能夠讓方法返回1或2,並且在主要方法中,我將這些值「轉換」爲硬幣的一側。問題是我得到一個錯誤消息,說:「類型不匹配 - 無法從int轉換爲布爾」。我真的覺得我只是用整數一路運行,並canot看到布爾怎麼進來的我得到「類型不匹配不能從int轉換爲布爾值」,儘管沒有使用布爾值

的代碼如下:

import java.util.Random; 

public class Oppgave629 
{ 

    public static void main(String[] args) 
    { 
     int command = 1; 
     int heads = 0; 
     int tails = 0; 
     while (command != -1) 
     { 
      System.out.print("Press 1 to toss coin, -1 to exit:"); 
      int coinValue = flip(); 
      if (coinValue = 1) {System.out.println("HEADS!"); heads++;} 
      if (coinValue = 2) {System.out.println("TAILS!"); tails++;} 
      System.out.printf("Heads: %d", heads); System.out.printf("Tails: %d", tails); 
     } 
    } 

    static int flip() 
    { 
     int coinValue; 
     Random randomValue = new Random(); 
     coinValue = 1 + randomValue.nextInt(2); 
     return coinValue; 
    } 
} 

回答

14

您的代碼

if (coinValue = 1) {System.out.println("HEADS!"); heads++;} 
if (coinValue = 2) {System.out.println("TAILS!"); tails++;} 

應該是

if (coinValue == 1) {System.out.println("HEADS!"); heads++;} 
if (coinValue == 2) {System.out.println("TAILS!"); tails++;} 

您將int類型分配給coinValue,並且正在被評估爲if語句中的bool。

+0

謝謝你,我忽略了! – user820913 2011-12-15 09:37:29

+0

沒問題,很高興我能幫忙! – b3h47pte 2011-12-15 09:52:13

6

你在你的if語句使用賦值(=)運算符,而不是比較操作(平等==):

if (coinValue = 1) 

應該

if (coinValue == 1) 

if語句需要一個布爾表達式,你正在分配1到coinValue,然後它試圖將其解釋爲一個布爾值來處理條件。

1

這是開發人員所做的最常見和危險編程錯誤的一部分。在過去,編譯器(如C編譯器)不會抱怨if(coinValue = 1)語句,因爲它會影響coinValue爲1,並且始終將條件評估爲true,因爲它等於1幸運的是,Java編譯器捕獲此錯誤讓你這樣做。 正如上面的答案中所述,將if (coinValue = 1)更改爲if (coinValue == 1)並且您的問題應該得到解決。

0

我就遇到了這個錯誤B/CI在有i = 4的for語句即 「爲(I = 1; i = 4的;我++)....」

不能使用一個等於在停止值的for命令中設置爲「=」。

-1
if (coinValue == 1) {System.out.println("HEADS!"); heads++;} 
if (coinValue == 2) {System.out.println("TAILS!"); tails++;} 

代替

if (coinValue = 1) {System.out.println("HEADS!"); heads++;}  
if (coinValue = 2) {System.out.println("TAILS!"); tails++;}  

與2個等號

相關問題