stdout运行时错误无响应〜HackerRank问题

时间:2019-09-25 12:51:13

标签: java if-statement runtime-error

下面是我的if语句的代码,该代码应根据n的值打印出字符串“ Weird”或“ Not Weird”。

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;
    }
}

编译时,出现运行时错误,提示“ stdout无响应”,因此没有输出。

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();
}

这是问题的其余代码,但是我在这部分没有任何错误。

更新:我没有在weirdOrNotWeird()函数中将int n定义为参数,也没有在我的main方法中调用weirdOrNotWeird()函数。完成这些操作后,我的代码即可正常工作。

1 个答案:

答案 0 :(得分:0)

使用一个参数定义您的方法,并在此方法中传递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();