我似乎遇到的问题是,在向前推进我的程序逻辑之前,我不确定如何让程序识别出玩家是否处于“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!);
}
}
}
}
}
答案 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?总是问自己:“这有意义吗?” - 在将代码提交到屏幕之前执行 。
作为附带建议,请从问题文本中删除那些令人分心的//
。除了惹恼之外,它们没有任何目的。