二元运算符'&&'的错误操作数。请帮我找出错误

时间:2015-10-01 17:06:23

标签: java if-statement operands

 package whowins;

import java.util.Scanner;
public class WhoWins {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    String candidate[] = {"Trump","Fiorina","Carson","Sanders"};
    String position[] = {"trumpPosition", "fiorinaPosition", "carsonPosition", "sandersPosition"};
    double supportTrump, supportFiorina, supportCarson, supportSanders;

    Scanner cs = new Scanner(System.in);

    System.out.println("What is Trump's support?");
    supportTrump = cs.nextDouble();
    System.out.println("What is Fiorina's Support?");
    supportFiorina = cs.nextDouble();
    System.out.println("What is Carson's support?");
    supportCarson = cs.nextDouble();
    System.out.println("What is Sander's support?");
    supportSanders = cs.nextDouble();

    if ((supportTrump) > (supportFiorina) && (supportCarson) && (supportSanders) {
        position[0] = ("First Place");
    }
}
}

我遇到的问题是无法比较用户提供的双打。

if ((supportTrump) > (supportFiorina) && (supportCarson) && (supportSanders) {< --------整行是错误的,我已经尝试了所有内容。

3 个答案:

答案 0 :(得分:7)

supportCarsonsupportSanders不是布尔值,因此它们不能作为逻辑AND的操作数。

也许你打算写这个:

if  (supportTrump > supportFiorina && supportCarson > supportSanders)

或者这个:

if  (supportTrump > supportFiorina && supportTrump > supportCarson &&  supportTrump > supportSanders)

答案 1 :(得分:1)

if语句如何运作?

if (condition){
   statement
}

其中condition是一个返回true或false的表达式。

现在让我们分析您的代码。

if ((supportTrump) > (supportFiorina) && (supportCarson) && (supportSanders) {
    position[0] = ("First Place");
}

在此示例中,条件为(supportTrump) > (supportFiorina) && (supportCarson) && (supportSanders)。 Java中的&&是逻辑运算符,表示AND或只是Conjunction。因此,if语句中有3个简单的条件:

  1. supportTrump> supportFiorina(类型:布尔值)
  2. supportCarson(type:double)
  3. supportSanders(type:double)

所有这些简单条件都必须具有布尔类型。第一个条件是布尔值。但另外2人返回双重类型值。 如果你想说"如果supportTrump大于supportFiorina,supportCarson和supportSanders"则括号中的Execute语句你应该替换这一行:

if ((supportTrump) > (supportFiorina) && (supportCarson) && (supportSanders) 

有了这个

 if (supportTrump > supportFiorina && supportTrump > supportCarson && supportTrump > supportSanders)

答案 2 :(得分:0)

你必须再次进行比较。 &&(supportCarson)实际上并没有比较它。所以&&(supportTrump> supportCarson)可以工作。