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) {
< --------整行是错误的,我已经尝试了所有内容。
答案 0 :(得分:7)
supportCarson
和supportSanders
不是布尔值,因此它们不能作为逻辑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个简单的条件:
所有这些简单条件都必须具有布尔类型。第一个条件是布尔值。但另外2人返回双重类型值。 如果你想说"如果supportTrump大于supportFiorina,supportCarson和supportSanders"则括号中的Execute语句你应该替换这一行:
if ((supportTrump) > (supportFiorina) && (supportCarson) && (supportSanders)
有了这个
if (supportTrump > supportFiorina && supportTrump > supportCarson && supportTrump > supportSanders)
答案 2 :(得分:0)
你必须再次进行比较。 &&(supportCarson)实际上并没有比较它。所以&&(supportTrump> supportCarson)可以工作。