Первый выпуск)
Вы должны инициализировать переменную startnumbervalue
с помощью некоторого номера по умолчанию, использовать 0 или -1 или что-то еще, потому что вы присваиваете ей значение в блоке try-catch, но вашоператор print не находится внутри этого блока. Если вы не хотите назначать значение по умолчанию, вы должны поместить оператор print в блок try.
Второй выпуск)
Максимальное значение, которое может хранить переменная int, составляет 2 147 483 647. но число, которое вы пытаетесь проанализировать, больше, поэтому оно не подходит для типа int. Измените тип на длинный. переменная типа long может хранить значения до 9,223,372,036,854,775,807.
Generex generex = new Generex("8605005[0-9]{3}");
String randomString = generex.random();
System.out.println("This is the Random number->" + randomString);
long startnumbervalue = 0; // changed to long
try {
startnumbervalue = Long.parseLong(randomString); // changed to Long.parseLong
} catch (NumberFormatException nfe) {
nfe.printStackTrace();
}
System.out.println("This is the start number->"+startnumbervalue);
}
По моему мнению, вам вообще не нужен блок try-catch, потому что ваше регулярное выражение всегда возвращает строку из десяти цифр. Вы можете удалить его полностью:
Generex generex = new Generex("8605005[0-9]{3}");
String randomString = generex.random();
System.out.println("This is the Random number->" + randomString);
long startnumbervalue = Long.parseLong(randomString);
System.out.println("This is the start number->"+startnumbervalue);
long lastFourDigits = startnumbervalue % 10000;
System.out.println("last four digits: "+lastFourDigits);