if if if if again

时间:2015-10-25 18:20:47

标签: java if-statement

我似乎遇到的问题是,在向前推进我的程序逻辑之前,我不确定如何让程序识别出玩家是否处于“MVP”位置(C,SS,CF)之一。< / p>

这三个位置只有在其他人的OPS高于800时才有资格获得“MVP”状态,必须达到900或以上才能被视为“MVP”。 再一次,我遇到了“if”和“if else”语句的问题。 再次,这个IS学校给出了问题,我不想要答案。只洞察我做错了什么。我想知道这不是为我做的。提前谢谢。

import java.util.Scanner;

public class baseBall {

    public static void main(String[] args) {

        /* A good part of a baseball player's offensive value is captured by the    
    statistic OPS - the sum of the player's on base percentage and slugging 
    percentage. An MVP candidate will typically have an OPS above 900,
    however if they play a difficult defensive position (catcher, shortstop, or center field)
    then they are an MVP candidate if their OPS is above 800. Write a program that will prompt the user for
    a player's name, their on base percentage, slugging percentage, and defensive position and report whether the player is an MVP candidate*/


        Scanner input = new Scanner(System.in);
        System.out.println("Please enter players name: ");
        String name = input.next();
        System.out.println("Please enter On Base Percentage: ");
        double Obp = input.nextDouble();
        System.out.println("Please enter slugging Percentage: ");
        double Slg = input.nextDouble();
        System.out
                .println("Please enter position (P,C,1B,2B,3B,SS,LF,CF,RF): ");
        String ball = input.next();

        String position; 
        double Ops = Obp + Slg;

        if ( position.equalsIgnoreCase("ss")){
            if (position.equalsIgnoreCase("cf")){
                if (position.equalsIgnoreCase("c")){
                    System.out.println("MVP Candidate!");
            else
                 System.out.println("NOT an MVP Candidate!);

                }
            }
        }
    }
}

3 个答案:

答案 0 :(得分:1)

您的代码正在检查玩家的位置是否为c AND ss AND cf。但是玩家将只在一个位置,它不能在所有三个位置,所以你的代码将始终打印“不是MVP候选人!”。

为简化起见,您的代码会检查位置是否为c AND ss AND CF,而您要检查位置是否为c OR ss OR cf

所以你必须使用条件运算符OR - &gt; ||

if(position.equalsIgnoreCase("ss") || position.equalsIgnoreCase("cf") || position.equalsIgnoreCase("c") {
     System.out.println("MVP Candidate!");
} else {
     System.out.println("NOT an MVP Candidate!);
}

答案 1 :(得分:1)

尝试在没有嵌套IF的情况下进行。相反,尝试使用AND和OR之类的布尔运算符。

如前所述,首先尝试使用纸张。尝试绘制决策树,看看它可能出错的地方和位置。

答案 2 :(得分:0)

你的嵌套ifs永远不会成真。从逻辑上和纸上考虑这个。

如果位置等于ss,它怎么能同时等于cf和c?总是问自己:“这有意义吗?” - 在将代码提交到屏幕之前执行

作为附带建议,请从问题文本中删除那些令人分心的//。除了惹恼之外,它们没有任何目的。