Есть код, который читает строку и парсит в int
. Как заставить видеть переменную s
как int
?
line0 = line0;
Pattern pattern = Pattern.compile("\\d+\\S?\\d*");
Matcher matcher = pattern.matcher(line0);
while (matcher.find()) {
String s = matcher.group(0);
if (s.replaceAll("\\D", " ").length() == s.length()) {
try {
integers.add(Integer.parseInt(s));
} catch (NumberFormatException e) {
}
}
}
int i = Integer.parseInt(s);
DaoImpl dao = new DaoImpl();
dao.save(i, line1, line2);
Получаю:
Exception in thread "main" java.lang.NumberFormatException: For input string: "79827956841"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:583)
at java.lang.Integer.parseInt(Integer.java:615)
at com.app.sms.reader.impl.SimpleSmsReader.smsReader(SimpleSmsReader.java:109)
at com.app.sms.reader.impl.SimpleSmsReader.readSms(SimpleSmsReader.java:51)
at com.app.workflow.impl.SimpleSmsWorkflow.processSms(SimpleSmsWorkflow.java:29)
at com.app.starter.Main.main(Main.java:33)
Эта ошибка возникает у Вас потому, что число "79827956841"
не умещается в тип int
.
Я попробовал вставить его в Integer.parseInt()
без кавычек (как целое число) и получил следующую ошибку:
error: integer number too large: 79827956841
System.out.println(Integer.parseInt(79827956841));
Могу посоветовать Вам использовать тип long
.
P. S. Как я понял из Вашего стэк-трейса, число 79827956841
- телефонный номер. В таком случае, возможно, хранить номер в виде числа - не лучшая идея, так как чаще всего над номерами необходимо выполнять именно строковые операции. Ну, по крайней мере, я всегда работал с номерами как со строками. Конечно, я не отрицаю, что хранение в виде числа куда экономнее, так что, если у Вас подобный ход обусловлен именно экономией при хранении, прошу простить.
Число 79827956841
не помещается в знаковое 32 битное (-2 147 483 648
- 2 147 483 647
)
Если вам нужно работать с такими большими числами используйте класс Long
и соответственно метод Long.parseLong()
. Допустимый диапазон значений от -263 до 263-1
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пишу что-то вроде текстового редактора, текст в котором добавляется в элементе:
Как используя canvas нарисовать VectorDrawableОбычный Drawable у меня получается нарисовать конвертацией в Bitmap, но как нарисовать VectorDrawable, возможно ли это?