java - Java中大整数的解析

标签 java parsing largenumber

我有一个 JTextField 对象,用户可以在其中输入数字(或任何内容)。我正在尝试解析此文本字段中的数字,并进行验证检查以查看该数字是否在特定范围内 (1-999)。

String lowerLimit = this.lowerLimitTextField.getText().trim();
String upperLimit = this.upperLimitTextField.getText().trim();

if( Integer.parseInt(lowerLimit) < 1 || Integer.parseInt(upperLimit) > 999 )
{
    return "The string must be in the range 0-999";
}

我的问题是,用户可以在文本字段中指定任何值。当我尝试输入“61412356123125124”之类的内容时,我在解析字符串时收到 NumberFormatException 。处理这种情况最简单的方法是什么?我确实有一个检查,确保输入的字符串都是数字,所以没问题。

我尝试将 parseInt() 更改为 parseLong() 但仍然遇到相同的问题,因为输入的数字本质上是无界的。这可以通过解析字符串来完成(首选),还是对 JTextField 本身设置一些约束的最简单方法?

最佳答案

使用NumberFormat解析

import java.text.NumberFormat;
import java.text.ParseException;

public class MyVisitor {


    public static void main(String[] args) throws ParseException {

        System.out.println(NumberFormat.getNumberInstance().parse("61412356123125124"));
    }
}

输出

61412356123125124

关于java - Java中大整数的解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25936617/

相关文章:

java - 无法将一个 Spring Boot 应用程序导入到另一个 Spring Boot 应用程序中

regex - 简单的短语识别

java - 这种 Java 日期格式有什么问题?

python - python 如何存储非常非常大的整数的值

algorithm - 计算 3^3^3^3(非常大的指数/Wolfram 是怎么做到的?)

javascript - 数学划线

java - Resttemplate在接收响应之前如何确定响应的状态码?

java - Locale.getDefault() 总是返回 en

java - java中如何将字符串转换为xml?

c# - 如何在 C# 的 HTML 源代码中按类或 id 抓取元素?