Код выводит только одно и то же - PullRequest
0 голосов
/ 24 сентября 2019

Я делаю проект для класса, в котором я учусь, и мне поручено создать программу на Netbeans, которая будет принимать 3 входа,

  1. рост человека,
  2. проблемы со спиной
  3. проблемы с сердцем.

Учитель сказал, чтобы использовать булево для двух проблем.он хочет, чтобы мы использовали inputBack.equals("N"), чтобы увидеть, равно ли оно N для входных данных, которые я получаю, в любом случае я приведу свой код ниже, если кто-то может мне помочь, это было бы здорово!

В основномпрограмма выводит разные, только когда я изменяю высоту, но мне нужно, чтобы она показывала что-то еще, когда b или h равно Y.

double H;

String b, h;
b = back.getText();
h = heart.getText();

H = Double.parseDouble(height.getText());

if (h.equals("Y") || b.equals("Y")) {
    output.setText("Sorry, its not safe for you to ride the coaster");
}

if ((H >= 122 && H <= 188) && (h.equals("N") || b.equals("N"))) {
    output.setText("You are cleared to ride, have fun!");
} else if (b.equals("Y") || h.equals("Y")) {
    output.setText("Sorry, its not safe for you to ride the coaster");
} else {
    output.setText("Sorry, its not safe for you to ride the coaster");
}

Ответы [ 3 ]

1 голос
/ 24 сентября 2019

Вы делаете это слишком сложным на самом деле.Ваша настоящая проблема в строке:

if ((H >= 122 && H <= 188) && (h.equals("N") || b.equals("N")))

Оператор ИЛИ должен быть оператором И там.Если у человека нет проблем с сердцем, ваш тест всегда будет успешным независимо от значения b.Вот почему ваш вывод не изменится, даже если вы измените значение.

Я думаю, что простого решения, подобного приведенному ниже, уже будет достаточно для достижения того, что вы хотите:

// Please use sensible names for your variables, and no uppercase single letters
double height = Double.parseDouble(heightField.getText()); // This could throw a NumberFormatException, you probably want to catch it
String backIssues = backField.getText();
String heartIssues = heartField.getText();

// Drop your first if test, it is completely unnecessary there.

// If the person is between 122 and 188 cm, and has no heart issues and has no back issues: Hooray!
if (height >= 122 && height <= 188 && heartIssues.equalsIgnoreCase("N") && backIssues.equalsIgnoreCase("N")) {
  output.setText("You are cleared to ride, have fun!");
} else { // In all other cases, not allowed to ride the coaster
  output.setText("Sorry, its not safe for you to ride the coaster");
}
0 голосов
/ 24 сентября 2019

ваша ошибка в этой строке:

if ((H >= 122 && H <= 188) && (h.equals("N") || b.equals("N"))) {

Действительно, если ваш рост в порядке, вы можете пойти на каботажное судно, даже если у вас есть одна из двух других проблем.Если вы установите h = "N" и b = "Y", условие h.equals("N") || b.equals("N") будет истинным, потому что h = "N".Хорошая вещь, которую нужно сделать, это заменить эту строку на:

if ((H >= 122 && H <= 188) && (h.equals("N") && b.equals("N"))) {

Вы также можете упростить свой код, вы поставите слишком много, если ...

0 голосов
/ 24 сентября 2019

У вас слишком много избыточных операторов if / else.Вы можете упростить свой код следующим образом:

//Heart or back problem, so no riding
if (h.equals("Y") || b.equals("Y")) {
    output.setText("Sorry, its not safe for you to ride the coaster");
}
else {  //health ok, check height

  if (H >= 122 && H <= 188)
      output.setText("You are cleared to ride, have fun!");
  else
      output.setText("You are outside the height requirements, you can't ride")
}

Также имейте в виду, что если пользователь вводит значение высоты, которое не является числовым, вы получите исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...