2014-02-22 40 views
-1
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(分母= 0)行说这是一个不兼容的类型,请解释和帮助!if语句中的不兼容类型?

+3

'='是赋值运算符。 '=='是等号运算符。 –

+0

谢谢!我忘了那个! – Sehja

+0

'if(denominator == 0)'!!! – FoggyDay

回答

2

你应该使用像

if (denominator == 0) 

==用于检查原始类型=平等,为变量分配值。

并且if语句需要布尔型的表达式类型。

+1

谢谢!我现在会记住的! – Sehja

1

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

int Num = 0 

双“==”用于一种数据类型比较其他例如:

if(Num==0){} 
1

由于@KugathasanAbimaran解释,你需要使用==测试平等,不=

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


事实上,在C/C++,if (denominator = 0)是合法的......和可能的错误,假设你其实只是想测试denominator0。 '因为它实际上所做的是评估为0并将0分配给分母。哎哟!!!

1

看来你是初学者,

你应该看到HERE 找到Java的运营商的列表,并有使用(意义)。 在你的代码:

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

你告诉你的程序分配一个值零分母(整型),而如果()条件的布尔值操作,你的目的,你应该写

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

的“==”是被称为相等运算和(如果值等于所述指定的一个,假如果不相等真)返回一个布尔值