2015-10-25 4 views
2

Проблема, с которой я, кажется, сталкиваюсь, заключается в том, что я не знаю, как заставить программу распознать, находится ли игрок в одной из позиций «MVP» (C, SS, CF), прежде чем двигаться вперед моя программная логика.Если и еще что-то еще

Эти три позиции имеют право на статус «MVP» только в том случае, если их OPS превышает 800 для всех остальных, для «MVP» это должно быть 900 или выше. Еще раз, у меня возникают проблемы с утверждением «if» и «if else». Опять же, это школа, данная проблема, и я не хочу ответа. Только понимание того, что я делаю неправильно. Я хочу узнать, что это не для меня. Заранее спасибо.

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

Хорошая часть оскорбительной ценности бейсболиста захватывается статистическим OPS - суммой процента игрока на процентном проценте и процентом пробок. Кандидат MVP, как правило, имеет OPS выше 900, однако, если они играют сложную защитную позицию (зрелище, приятели или центральное поле), тогда они являются кандидатами на MVP, если их OPS превышает 800. Напишите программу, которая будет запрашивать у пользователя имя игрока, их процент на основе, процент пробок и оборонительную позицию и сообщают, является ли игрок кандидатом MVP. – Brent

ответ

0

Ваш вложенный ifs никогда не будет правдой. Подумайте об этом логично и на бумаге.

Если позиция равна ss, как она может равняться cf и c одновременно? Всегда спрашивайте себя: «это имеет смысл?» - сделайте это до, введя код на экран, и вы станете золотым.

В качестве побочной рекомендации, пожалуйста, избавитесь от тех, которые отвлекают // от вашего текста вопроса. Они не служат никакой цели, кроме как раздражать.

+0

сделают, спасибо за подсказку – Brent

1

Ваш код проверяет, является ли позиция игрока c AND ss AND cf. Но игрок будет только в одной позиции, он не может быть во всех трех, поэтому ваш код всегда будет печатать «Не кандидат MVP!».

Чтобы сделать это простым, ваш код проверяет, является ли позиция c AND ss AND CF, вместо этого вы хотите проверить, является ли позиция c OR ss OR cf.

Таким образом, вы должны использовать условный оператор OR ->||:

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

Попробуйте делать это без вложенных МСФ. Вместо этого попробуйте использовать логические операторы типа AND и OR.

Как указано выше, попробуйте сначала использовать бумагу. Попробуйте рисовать дерево решений, чтобы увидеть, что и где это может произойти неправильно.

Смежные вопросы