java - 大输入的数字格式异常

标签 java netbeans biginteger numberformatexception

此代码适用于某些输入。 但是对于更高的输入值(例如 1000000),我得到一个 NumberFormatError。 输入(取自 s[])的值范围为 1-2000000 可能是什么原因?

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

public class Solution {

    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */

       try
        {
         BufferedReader read = new BufferedReader(new InputStreamReader(System.in));

         int no=Integer.parseInt(read.readLine());

         String s[]=read.readLine().split(" ");

         int result=0;

         for(int i=0; i<no; i++)
         {
             result+= Integer.parseInt(s[i]);
             if(result<0)
                 result=0;
         }
         System.out.println(result);

        }
        catch(IOException e)
       {
           System.out.println(e.getMessage());
       }
    }
}

最佳答案

在您的 for 循环中,您输入的第一个数字是数组的大小。到目前为止,这就是您的逻辑。除非您实际手动加载 2,000,000 个数字(或复制/粘贴),否则将抛出 ArrayIndexOutOfBoundsException。 .

你会得到一个 NumberFormatException如果您要输入非数字作为第二个输入,或者输入大于 Integer.MAX_VALUE 的数字(2147483647) 或小于 Integer.MIN_VALUE (-2147483648)。

输入类似:

1000000
2 1 2 1 2 1 /*... 999990 digits later ...*/ 2 1 2 1

使程序正确终止。这是我使用的输入文件,如果有人需要的话:http://ge.tt/95Lr2Kw/v/0

该程序是通过命令提示符手动编译和运行的,如下所示:java Solution < in.txt .

编辑:我只记得数组中的输入值可能大到 2000000。你必须使用 BigInteger持有result值高达 2000000^2。

关于java - 大输入的数字格式异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19607531/

相关文章:

java - 如何在 JMeter Beanshell 中对数字数组进行排序

java - 使用 RestTemplate 上传 CommonsMultipartFile 的文件失败

php - Netbeans Xdebug 安装+PHP+ ubuntu 操作系统

go - 缓慢的 int.big 计算并且只在一个线程上

c# - 未经检查的 block 不适用于 BigInteger?

java - 如何将字符串从基数 32 解码为 BigInteger

java - CDI:观察特定类型实体的选择/取消选择(数据表层次结构)

java - 使用 JMenuItem 打开 JInternalFrame

NetBeans 7.3.1 FTP 保存时上传文件

java - 如何增加java中图像的对比度?