1. ホーム
  2. java

[解決済み] booleanを使用していないのに、「Type mismatch cannot convert from int to boolean」と表示される。

2022-01-31 07:52:32

質問

Java how to program"という本の中の練習問題をやっています。私は、コイン投げをシミュレートするアプリケーションを作成することになっています。私は、コインの表裏をランダムに返すメソッド(flip)を作ることになっています。このメソッドは1か2を返すようにし、mainメソッドでコインの表裏を意味する値に変換しています。問題は、「"Type mismatch -cannot convert from int to boolean"」というエラーメッセージが表示されることです。私は本当に、ずっと整数のみで操作していて、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++;}

coinValueにint型を代入して、それがif文の中でboolとして評価されているのですね。