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");
    }
}
}

私が抱えている問題は、ユーザーが提供する Double を比較できないことです。

if ((supportTrump) > (supportFiorina) && (supportCarson) && (supportSanders) { <--------この行全体がエラーであり、すべてを試しました。

4

3 に答える 3

7

supportCarsonおよびsupportSandersはブール値ではないため、論理 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 (型: boolean)
  2. supportCarson (型: double)
  3. サポートサンダース(タイプ:ダブル)

この単純な条件はすべてブール型でなければなりません。最初の条件はブール値です。しかし、他の 2 つは double 型の値を返します。「supportTrump が supportFiorina、supportCarson、および supportSanders より大きい場合、括弧内のステートメントを実行する」と言いたい場合は、次の行を置き換える必要があります。

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

こいつで

 if (supportTrump > supportFiorina && supportTrump > supportCarson && supportTrump > supportSanders)
于 2015-10-01T17:08:11.087 に答える