繁体   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