簡體   English   中英

盡管未使用布爾值,但我收到“類型不匹配無法從int轉換為布爾值”

[英]I get “Type mismatch cannot convert from int to boolean” despite not using boolean

我正在“ Java如何編程”一書中做練習。 我應該做一個模擬投幣的應用程序。 我應該做一個方法(翻轉),隨機返回硬幣的一面。 我傾向於使該方法返回1或2,在主方法中,我將值“轉換”為代幣一側。 問題是我收到一條錯誤消息,內容為:“類型不匹配-無法從int轉換為boolean”。 我真的認為我一直都只使用整數,並且不知道布爾值是如何出現的。

代碼如下:

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;
    }
}

您的密碼

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++;}

您正在為intValue分配一個int類型,並且該類型在if語句中被作為布爾值進行評估。

您在if語句中使用賦值(=)運算符,而不是比較運算符(等於==):

if (coinValue = 1)

應該

if (coinValue == 1)

如果if語句期望一個布爾表達式, coinValue 1分配給coinValue ,然后嘗試將其解釋為布爾值以處理條件。

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

我遇到了這個錯誤b / ci在for語句中有i = 4,即“ for(i = 1; i = 4; i ++)....”

您不能在for命令中使用等於“ =”作為停止值。

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++;}    

兩個等號

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM