为什么在联机提交此代码时出现运行时错误?(jdk 1.7)

阿南德·维加拉茹(Anand Vegaraju)

这是代码(使用IntelliJ想法jdk 1.8)对我来说效果很好,但是每当我在在线门户网站(jdk 1.7)中提交它时,都会显示运行时错误。我应该做些什么改变?我不知道是什么原因导致了错误。

import java.lang.String;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;



public class Main {
    public static void main(String[] args) throws IOException{
        int n,k;
        int i=0;
        int sum=0;
        do {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            String s = reader.readLine();
            n = Integer.parseInt(s);
            String s1 = reader.readLine();
            k = Integer.parseInt(s1);
            reader.close();



        }while ( n<0 || k>java.lang.Math.pow(10,9) || n<k );

        for (i=0 ; i<=k ; i=i+2){
            sum+=  fact(n)/(fact(i)*fact(n-i));
        }
        System.out.print(sum);

    }
    public static int fact(int n) {
        int j=1;
        while(n!=0){
            j=j*n;
            n--;
        }
        return j;
    }
}

我不想使用扫描仪

错误 :

Exception in thread "main" java.lang.NumberFormatException: null
    at java.lang.Integer.parseInt(Integer.java:542)
    at java.lang.Integer.parseInt(Integer.java:615)
    at Main.main(Main.java:18)
约翰·布林格

堆栈跟踪非常清楚,问题是由于Main.main()传递null引起的Integer.parseInt()报告parseInt()调用出现在的第18行Main.java; 在您介绍它时,它与您的源代码并不完全一致,但这对这一行来说是正确的:

            n = Integer.parseInt(s);

此时的字符串s只是通过您BufferedReaderreadLine()方法获得-这表明基础流中不再有可用数据(最终是System.in)。

如果它发生在循环的第一次迭代中,那可能会有点令人惊讶,但是您在该迭代的末尾关闭BufferedReader自己,并且也关闭了所有包装的Readers和InputStreams。在第二次迭代中,System.in已关闭,您无法从中读取任何内容。您应该改为BufferedReader在循环外部进行初始化,并等待将其关闭,直到退出循环为止:

        BufferedReader reader =
                new BufferedReader(new InputStreamReader(System.in));

        do {
             // do something with 'reader'
        } while ( /* some condition */ );

        reader.close();

即使您没有关闭基础流,您肯定也在缓冲来自其的输入,然后可能会将其中一些缓冲的输入与一起扔掉BufferedReader这本身可能会使您的程序比预期的更早观察文件结束。例如,如果您将close()循环移到外部,但是仍然BufferedReader在每次循环迭代中创建并读取新内容,则可能会发生这种情况

此外,明智的做法是检查每次读取是否成功读取了一行,并处理没有被读取的情况(由null返回表示)。但是,要提交给在线解决方案检查器,可以合理地假设输入内容符合您的期望。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么运行此代码时出现分段错误?

访问远程服务器IIS7上的虚拟目录时出现运行时错误

使用Xcode 7,Unity 5.2.3f1,iOS 9.1基本SDK构建时出现错误

为什么此python函数在for循环中运行时跳过索引1到3而不迭代索引2

为什么此记录结构正在编译但出现运行时错误

为什么此代码编译并在执行时给出运行时错误

为什么会出现错误:ADB退出代码为1

在运行模拟器时,出现此错误:原因:无效的类型代码:1D

为什么ArrayList的get操作的运行时为O(1),而LinkedList的运行时为O(N)?

为什么FormulaR1C1确实发生运行时错误'1004'

当我的文本文件明显多于1行时,为什么会发生此错误?

为什么/“正常运行时间”如何显示CPU负载> 1?

命名xlXY ScatterLines图表时,VBA运行时错误为“ 7”

为什么我的代码出现运行时错误?

运行时错误除以-1

运行时出现“ java.lang.ArrayIndexOutOfBoundsException:1”错误

为什么在Codechef中提交此代码时出现运行时错误(SIGABRT)?

运行时错误7:内存不足并加速代码

使用python在uva中提交代码时出现运行时错误

为什么`to_unsigned(0,4)> = -1`在运行时评估为“ FALSE”?

为什么#1 程序显示运行时错误而#2 运行正常?

VBA - 运行此代码时出现运行时错误“1004”

为什么在用户授予运行时权限后 onRequestPermissionsResult 中返回的 requestCode 为 1?

在 (Microsoft) Liquid 中实现 Steane [[7, 1, 3]] 代码

当我的代码运行正常时,为什么会出现错误“__init__() missing 1 required positional argument”?

为什么 (List<Object>) list.size() 的运行时间复杂度是 O(1)?

在函数参数中,为什么 (i++) 在 (i+1) 运行时出现错误

Fortran 运行时错误:列表输入中项目 1 的错误整数?不知道为什么

为什么在仅 M1 mac 上运行 docker build 时出现 pip install 错误