Условное заявление на Java7 - PullRequest
0 голосов
/ 04 октября 2018

Здравствуйте, я только начал упражнение по программированию на hackerrank, и у меня возникла небольшая проблема с использованием класса сканера с функцией пропуска.вот что я пробовалЦель В этом вызове мы начинаем с условных утверждений.Проверьте вкладку Учебное пособие для учебных материалов и обучающего видео!

Задание

Если задано целое число, выполните следующие условные действия:

  • Если n нечетное, выведите Weird
  • Если n четное и в диапазоне от 2 до 5, выведите Not Weird
  • Если n четное и в диапазоне от 6 до 20, выведите Weird
  • Если n чётно и больше 20, выведите Not Weird
  • Заполните код заглушки, предоставленный в вашем редакторе, чтобы напечатать, является ли n странным.

Формат ввода

Одна строка, содержащая положительное целое число, n.

Ограничения

Формат вывода

Печатать странно, если число странное;в противном случае выведите Not Weird.

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;

public class Solution {


    private static final Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        int N = scanner.nextInt();

        if (N % 2 == 0 && N >= 2 && N <= 5 && N > 20) {
            System.out.println("not weird");

        } else if (N % 2 == 0 && N >= 6 && N <= 20) {
            System.out.println("weird");
        } else {
            System.out.println("weird");
        }

        scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");


        scanner.close();
    }
}

Пожалуйста, что я делаю не так.

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Вот как я это упростил.

    if(N % 2 == 0 )
    {            
        if((N >= 2 && N <= 5) || N > 20)
        {
            System.out.println("Not Weird");
        }
        else
        {
            System.out.println("Weird");
        }    
    }
    else
    {
        System.out.println("Weird");
    }
0 голосов
/ 17 июля 2019

См. Код ниже

int N = scanner.nextInt();
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");

if ((N % 2 == 0 && N >= 2 && N <= 5) || N > 20) {
    System.out.println("Not Weird");

} else if (N % 2 == 0 && N >= 6 && N <= 20) {
    System.out.println("Weird");
} 
else 
{
    System.out.println("Weird");
}
0 голосов
/ 04 октября 2018

Вы смешиваете && и ||, поэтому ваш первый if никогда не будет работать, как упомянуто в комментариях.

Так что, похоже, единственная "Not Weird" распечатка 2, 4 и четные числа > 20.

Так что используйте это в своих интересах, чтобы просто проверить "Weird" выходы, в противном случае выведите "Not Weird".

if (n % 2 == 0) {
    if ((n >= 2 && n <= 5) || (n > 20)) {
        return "Not Weird";
    }
}
return "Weird";

Онлайн-демонстрация

Сказав это, я не уверен, что вы хотите с Scanner::skip

...