if语句中的类型不兼容?

时间:2014-02-22 04:19:21

标签: java if-statement incompatibletypeerror

import java.util.Scanner;

public class DivideTwo
{
public static void main(String[] args)
{
    Scanner keyboard = new Scanner(System.in);
    int numerator;
    int denominator;

    System.out.println("This program divides two numbers.");
    System.out.print("Enter the numerator: ");
    numerator = keyboard.nextInt();
    System.out.print("Enter the denominator: ");
    denominator = keyboard.nextInt();

    System.out.print(numerator + "/" + denominator + " = ");
    if (denominator = 0)
    System.out.println("Division by zero is not allowed.");
    else
    System.out.println((double)numerator/denominator);

我的if(denominator = 0)行表示它是一个不兼容的类型,我收到编译错误,请解释并帮助!

4 个答案:

答案 0 :(得分:2)

您应该使用

if (denominator == 0)

==用于检查基本类型中的相等性,=用于为变量赋值。

if语句需要表达式类型为boolean。

答案 1 :(得分:1)

单个“=”用于为变量赋值。例如:

int Num = 0

双“==”用于将一种数据类型与另一种数据类型进行比较:

if(Num==0){}

答案 2 :(得分:1)

正如@KugathasanAbimaran解释的那样,您需要使用==来测试相等性,而不是=

“不兼容类型”错误的原因是denominator = 0实际上是一个有效的表达式,其值为0。但if语句的条件需要一个类型为boolean ...且0不是boolean值的表达式。


事实上,在C / C ++中,if (denominator = 0)是合法的......并且可能一个错误,假设您实际上只是试图测试denominator反对0。 '它实际实际上做的是评估0并将0分配给'分母'。哎哟!!!

答案 3 :(得分:1)

看来你是初学者,

你应该看到HERE 找到Java运算符列表及其用法(含义)。 在您的代码中:

 if (denominator = 0)
System.out.println("Division by zero is not allowed.");

你告诉你的程序为分母(int类型)赋值为零,而if()条件对布尔值进行操作,为了你的目的,你应该写

 if (denominator == 0)
System.out.println("Division by zero is not allowed.");

'=='被称为等于运算符并返回一个布尔值(如果值等于指定值,则为true,如果不相等则为false)

相关问题