如何在java中为大整数输入引发异常?

如何在java中为大整数输入引发异常?,java,exception,input,integer,runtime,Java,Exception,Input,Integer,Runtime,我有一个输入两个整数的特殊代码。然而,我尝试使用try-catch方法来抛出IOException,但没有任何帮助。我想做的是,如果输入的任何数字非常大,比如12345678910,则抛出一个错误—一个大于10位的数字,这样我的代码就不会抛出错误。由于保密原因,我不能透露该代码,但我认为不需要该代码。有什么建议吗?提前感谢。整数所能容纳的最大值小于最大的10位数字。 电话号码是2147483647。因此,输入一旦存储在int变量中就无效 对于小于该边界的整数,例如5位,可以使用该值 创建新的异常

我有一个输入两个整数的特殊代码。然而,我尝试使用try-catch方法来抛出IOException,但没有任何帮助。我想做的是,如果输入的任何数字非常大,比如12345678910,则抛出一个错误—一个大于10位的数字,这样我的代码就不会抛出错误。由于保密原因,我不能透露该代码,但我认为不需要该代码。有什么建议吗?提前感谢。

整数所能容纳的最大值小于最大的10位数字。 电话号码是2147483647。因此,输入一旦存储在int变量中就无效

对于小于该边界的整数,例如5位,可以使用该值

创建新的
异常
类:

public class CustomException extends Exception
{
  public CustomException(String message)
  {
    super(message);
    //handle the exception here.
  }
}
然后从您使用的方法中声明抛出
CustomException

public void myMethod(int a, int b) throws CustomException {

if(a > 99999 || b > 99999) {
    throw new CustomException("write what message you want printed");
    return;
}

//do your stuff here

}
或者如果您希望在输入非常大的数字后立即检查异常

假设您使用
扫描器
接收号码。以
字符串
形式进行输入。然后尝试通过检查将其转换为整数形式

Scanner sc = new Scanner(System.in);

String number = sc.nextLine();
int num;
double holder = String.valueOf(number);

if(holder>Integer.MAX_VALUE) {
     throw new Exception();
} else
num = (int) holder;
这似乎是一种非常迂回的方法,但它适用于任何长度的数字


您也必须对另一个数字执行相同的操作,以便将逻辑放入方法中。

一种方法是通过将整数转换为字符串来检查长度,另一种方法是检查范围并抛出错误消息

例如:

Scanner in = new Scanner (System.in);
int input = nextInt();

String temp = Integer.toString(input);

if(temp.length > 5 )
throw new IllegalArgumentException ("The value is larger than 5 digits! ");

至于Sotirios Delimanolis,你的问题让我很生气。如果你的意思是如果int是6位数字,意味着百万,你需要抛出一个错误,那么你正在寻找这样的东西:

 public void checkUnderMillion(int integer) throws IOException {
        if (integer >= 1000000) {
            throw new IOException("Invalid input");
        }
    }

如果我理解了您的问题,这应该会有帮助。

请澄清输入数字大于5位(32位)。您的问题非常不清楚:“但是,我尝试使用try-catch方法处理抛出IOException,但没有帮助”关于什么的帮助?“我想做的是在……的情况下抛出一个错误,这样我的代码就不会抛出一个错误”,这也很让人困惑。“但我假设这个代码不是必需的”事实上,这里的代码示例将非常好,您不必输入原始代码,甚至会更好。很抱歉,请检查编辑,谢谢。现在看起来您应该将值读取为字符串(或者可能是BigInteger)。然后你可以验证它并抛出你的异常。你是如何获得输入的?通过scanner.nextInt()?在这种情况下,如果输入大于
Integer.MAX_值,则该方法将自动抛出
inputmascherror
。为什么要捕获它并引发另一个异常?输入无效,整数值超出范围:12345678910。它甚至在进入代码之前就抛出了一个错误。我认为问题的范围和值大于5位。
if(integer)感谢beresfordt。是一个输入错误。对于@kaushaya,如果使用布尔值会更好。将void改为布尔值。去掉抛出。