Как использовать OR в выражении Java If - PullRequest
0 голосов
/ 24 сентября 2019

Я начинающий Java-кодер, у меня есть простое приложение Scanner, которое принимает пользовательский ввод.Я хочу поместить оператор if, чтобы пользователь не мог ввести отрицательные значения в сканер, или, по крайней мере, получить сообщение об ошибке, когда они это сделают.

Я попытался поместить оператор if, который, если число> 0, тогда код выполняется, в противном случае отображается сообщение об ошибке.Кажется, это работает при тестировании для x, но не для x ИЛИ y.

  if (x >= 0 || y >= 0){
  System.out.println("Sum of x+y = " + z);

  if (x == y) {
      System.out.println("x and y are equal");
  } else {
      System.out.println("x and y are not equal");

  System.out.println("Counting from 0 to " + x);
  for (int i = 0; i <= x; i++) {
      System.out.print(i + " ");
     }

Ответы [ 4 ]

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

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

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

if (x >= 0 || y >= 0) {
    // all is good
} else {
    // print error message
}

Этот тест будет успешным, если или x или y неотрицательны.Из вашего описания вы хотите, чтобы тест не прошел, если любой из них отрицательный.Для этого вам нужно либо изменить смысл тестов:

if (x < 0 || y < 0) {
    // print error message
} else {
    // all is good
}

, либо использовать И вместо ИЛИ:

if (x >= 0 && y >= 0) {
    // all is good
} else {
    // print error message
}
3 голосов
/ 24 сентября 2019

Если вы хотите, чтобы оба числа были> = 0, вы должны использовать AND вместо OR.Если x равен -5, а y равен 7, код будет выполнен, но отсчет от 0 до -5 будет бессмысленным.

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

Лучший способ непрерывного запрета пользователю вводить отрицательные числа:

Scanner in = new Scanner(System.in);
int x, y;

do {
    System.out.println("Input x:");
    x = in.nextInt();
    System.out.println("Input y:");
    y = in.nextInt();
} while (x < 0 || y < 0);

Этот цикл do-while будет запрашивать ввод, пока оба x и y не будут положительными целыми числами.Я не уверен, что это то, чего вы хотели достичь, но это то, что я понял из вашего вопроса, поскольку вы сказали, что хотите использовать оператор if для предотвращения отрицательного ввода.

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

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

Я рекомендую вам использовать else если вместо 2 'if, например

        If (x >= 0 || y >= 0){
        //your code
        } else if (x == y) {
        //your code 
       } else {
        //your code 
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...