1
 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) { <--------这整行是一个错误,我已经尝试了一切。

4

3 回答 3

7

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

也许你打算写这个:

if  (supportTrump > supportFiorina && supportCarson > supportSanders)

或这个 :

if  (supportTrump > supportFiorina && supportTrump > supportCarson &&  supportTrump > supportSanders)
于 2015-10-01T17:08:07.703 回答
1

if 语句如何工作?

if (condition){
   statement
}

wherecondition是返回 true 或 false 的表达式。

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

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

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

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

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

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

有了这个

 if (supportTrump > supportFiorina && supportTrump > supportCarson && supportTrump > supportSanders)
于 2015-10-01T17:08:11.087 回答
0

您必须再次进行比较。&&(supportCarson) 实际上并没有比较它。所以 &&(supportTrump>supportCarson) 会起作用。

于 2015-10-01T17:09:44.583 回答