如何在Java中的if-else块中进行等式比较?

时间:2016-10-23 17:40:25

标签: java if-statement

我是Java的新手,但我对以下代码感到茫然。它没有打印出成本:

boolean Smart;
boolean Flat;
int smallsmart = 322;
int largesmart = 405;

void price(){
    Scanner in = new Scanner(System.in);
    System.out.printf("%nWhat Type of TV would you like Smart of Flat ???  ");//Prompts
    boolean TV = in.next() != null;

    System.out.println("What Size would you like 32 or 42 inch ?? ");//Prompts
    int Size = in.nextInt();    

    if (TV = Smart && Size == 32){//start of if 
        System.out.println("The Price of your Tv is " + smallsmart);    
    } else if (TV = Smart & Size == 42){//start of if 
        System.out.println("The Price of your Tv is " + largesmart);
    }

5 个答案:

答案 0 :(得分:0)

Smart将为false(默认值为boolean)

在if和else条件中,你提到TV = Smart 对于这两种情况都是错误的。 这就是为什么它不打印任何东西。

请更正您的代码。电视== SMART

答案 1 :(得分:0)

您没有为Smart和Flat布尔值分配值。

1等号=表示分配新值。 2等于符号意味着比较这两个值, 所以TV = Smart实际上意味着您要将Smart的值分配给TV变量。

您应该将其更改为if (TV == Smart)

答案 2 :(得分:0)

in.next() != null永远是真的 Smart始终为false,因为它具有默认值 所以TV == Smart也总是假的。

你想要

String TV = in.next();
// ...
if (TV == "Smart" && ...

boolean smart = in.next() == "Smart";
// ...
if (smart && ...

答案 3 :(得分:0)

boolean smart;
boolean flat;
int smallSmart = 322;
int largeSmart = 405;

void price(){
    Scanner in = new Scanner(System.in);
    System.out.println("What Type of TV would you like Smart of Flat ???");
    String typeOfTv = in.nextLine().toLowerCase();

    if(typeOfTv.equals("smart")) {
        smart = true;
    } else if(typeOfTv.equals("flat")) {
        flat = true;
    } else {
        System.out.println("You have not selected an appropritate TV. Exiting...");
        System.exit(0);
    }

    System.out.println("What Size would you like 32 or 42 inch ?? ");//Prompts
    int size = in.nextInt();    

    if (smart && size == 32){//start of if 
        System.out.println("The Price of your Tv is " + smallSmart);    
    } else if (smart & size == 42){//start of if 
        System.out.println("The Price of your Tv is " + largeSmart);
    }
}

首先,我建议您使用camel case convention命名变量。

此处您正在为智能分配电视

TV = Smart

=用于为变量赋值,==用于比较。

答案 4 :(得分:0)

你应该记住几件事。

首先,我建议您了解Java命名约定。根据示例,您的变量应为小写(smart而不是Smart)。这是一个指向Oracle文档的链接:http://www.oracle.com/technetwork/java/codeconventions-135099.html

其次,===之间存在很大差异。第一个是作业,第二个是比较

第三,差异并不大,但你应该只选择一个&或两个。在if陈述中,它有点意义。有一个(&),它只是意味着 AND ,有两个(&&),它还意味着 AND ,带有一个调整:它“短路”。

什么是“短路”?在简历中,它是 math 。在这种情况下:

  

1 AND'something'='something';

     

0和'某事'= 0(&&会短路)

if语句中,您需要检查某个变量是否为空之前,以避免抛出NullPointerException,因此Shurt-circuit是好的。像这样:

if( variable != null && variable.isSomething() ) {
    //do stuff
}

如果变量variable为空(因此variable != nullfalse),它将短路到false,并且它不会抛出异常,因为它不会尝试读取不存在的变量。

我建议你总是进行短路评估。

同样的丁字裤用 OR 功能发生。你有普通|和短路||。在此, math 是:

  

0或'某事'='某事'

     

1或''某事'= 1(||将会短路)

第四,在写boolean TV = in.next() != null;之类的东西时要小心,在Scanner(我确定)的情况下它不会返回null,但它可能会返回一个空的{{1} }。

我希望我有所帮助。

祝你有个愉快的一天。 :)