Java中的运行时错误(NZEC)

时间:2014-10-10 07:04:53

标签: java

我编写了一个Java代码来生成两个整数之间的素数。我在SPOJ中遇到运行时错误(NZEC)。我该如何解决这个问题?

import java.util.Scanner;
public class prime {
    public static void main(String[] args) {
        Scanner x = new Scanner(System.in);
        Scanner y = new Scanner(System.in);
        int m =  x.nextInt();
        int n =  y.nextInt();
        if (m >= 1 && n <= 1000000000 && n - m <= 100000) {
            for (int current = m; current <= n; current++) {
                int sqr_root = (int) Math.sqrt(current);
                boolean is_prime = true;
                for (int i = 2; i <= sqr_root; i++) {
                    if (current % i == 0) {
                            is_prime = false; // Current is not prime.
                    }
                }
                if (is_prime) {
                        System.out.println(current);
                }
            }
        }
        return; 
    }
}

1 个答案:

答案 0 :(得分:1)

突出的错误是您创建了两个Scanner来从System.in读取。我怀疑这会导致异常;当然这是不明智的。

更改此

Scanner x = new Scanner(System.in);
Scanner y = new Scanner(System.in);
int m =  x.nextInt();
int n =  y.nextInt();   

到这个

Scanner x = new Scanner(System.in);
int m =  x.nextInt();
int n =  x.nextInt();   

当然,这是假设您确实希望从标准输入而不是命令行参数中获取值。

(您可以从return方法中删除main