Нет ответа на ошибку во время выполнения stdout ~ Проблема HackerRank - PullRequest
0 голосов
/ 25 сентября 2019

Ниже приведен код для моего оператора if, который должен выводить строку «Weird» или «Not Weird» в зависимости от значения n.

public class Solution {
    public static String weirdOrNotWeird(){

    int n;
    String ans = "";

    // if n is odd or n is even & 5 < n < 21 print Weird
    if((n % 2 == 1) || ((n % 2 == 0) && (n > 5 && n < 21))){
        ans = "Weird";

    // otherwise print Not Weird
    } else {
        ans = "Not Weird";
    } 
    System.out.println(ans);
    return ans;
    }
}

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

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

public static void main(String[] args) {
    int n = scanner.nextInt();
    scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");

    scanner.close();
}

Это остальная часть кода проблемы, но у меня нет ошибок в этой части.

ОБНОВЛЕНИЕ: Я не определил int n в качестве параметрав моей weirdOrNotWeird() функции, и я не вызывал мою weirdOrNotWeird() функцию в моем основном методе.После того, как я это сделал, мой код заработал.

1 Ответ

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

Определите ваш метод с одним параметром и передайте n в качестве параметра в этом методе.

 public static String weirdOrNotWeird(int n) {
        String ans = "";
        // if n is odd or n is even & 5 < n < 21 print Weird
        if ((n % 2 == 1) || ((n % 2 == 0) && (n > 5 && n < 21))) {
            ans = "Weird";
            // otherwise print Not Weird
        } else {
            ans = "Not Weird";
        }
        return ans;
    }

И вызовите метод после scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");, передав n в качестве параметра, подобного следующему:

int n = scanner.nextInt();
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
System.out.println(weirdOrNotWeird(n));
scanner.close();
...