[英]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.