Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java解析大型int_Java_Parsing_Largenumber - Fatal编程技术网

用Java解析大型int

用Java解析大型int,java,parsing,largenumber,Java,Parsing,Largenumber,我有一个JTextField对象,用户可以在其中键入数字或任何内容。我试图解析这个文本字段中的一个数字,并进行验证检查,以查看该数字是否在1-999的特定范围内 String lowerLimit = this.lowerLimitTextField.getText().trim(); String upperLimit = this.upperLimitTextField.getText().trim(); if( Integer.parseInt(lowerLimit) < 1 ||

我有一个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本身设置一些约束的最简单方法?

使用NumberFormato解析

输出

61412356123125124

答案是,例外是你的朋友:它告诉你这个数字太大了。。。将错误处理放在catch块中,最好是声明throws NumberFormatException和catching调用块,以便调用该方法


因此,您可以使用Integer.parseInt、Long.parseLong或新的BigIntegerString。。。在这种情况下,我建议使用Integer.parseInt。一旦得到int,就可以进行边界检查。如果超出范围,您可能只想抛出NumberFormatException:

看起来您不想获取数字,只需检查范围0-999。在这种情况下,只需捕获NumberFormatException并返回相同的字符串:

try {
    if( Integer.parseInt(lowerLimit) < 1 || Integer.parseInt(upperLimit) > 999 ) {
        return "The string must be in the range 0-999";
    }
} catch (NumberFormatException e) {
        return "The string must be in the range 0-999";
        //or more relevant message, like "Number to long" or something
}

1-检查字符串长度。2-然后解析并执行相等。一种方法-使用,另一种方法,使用JFormattedTextField,另一种方法,使用。无论你做什么,都不要使用KeyListener进行任何操作,因为你会冒着调试错误的风险。虽然不太可能,但是如果用户输入类似0000235的东西呢?字符串长度将确定这是不正确的,但从技术上来说,它应该被接受。C.B所说的或使用BigInteger对象,但这对于模糊的输入来说要昂贵得多。对同一个方法的大量调用,而您实际上从未返回值。除此之外,抛出错误或打印警告,而不是返回字符串。只是在现有代码中添加了一些,问题在于解决方案,而不是改进实现
try {
    if( Integer.parseInt(lowerLimit) < 1 || Integer.parseInt(upperLimit) > 999 ) {
        return "The string must be in the range 0-999";
    }
} catch (NumberFormatException e) {
        return "The string must be in the range 0-999";
        //or more relevant message, like "Number to long" or something
}