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