Я пытался написать фрагмент кода, чтобы проверить, содержит ли строка целое число. Я знаю о решении try catch, но я читал, что становится плохо, если вы вызываете метод из других классов. Я прочитал, что метод покажет ошибку, но основная часть вызывающего его класса все равно будет продолжать работать. Поэтому я пытался сделать это вручную. Моя проблема в том, что я могу оценить, что строка не пуста и что все символы в строке являются цифрами, но я не могу найти способ проверить, слишком ли велико число для сортировки целого числа. Дело в том, что я нашел на stackoverflow много похожих тем, но никто не решает эту проблему без try catch. Вот мой метод.
// INTEGER VERIFICATION
public static boolean isInteger (String str_input){
int number_of_digits = 0;
if (str_input.isEmpty()) {
JOptionPane.showMessageDialog(null, "No input inserted", "Error", JOptionPane.ERROR_MESSAGE);
return false;
}
for (char c : str_input.toCharArray()){
if(Character.isDigit(c)){
number_of_digits++;
}
}
if (number_of_digits == str_input.length()){
return true;
}
else {
JOptionPane.showMessageDialog(null, "The input is not an integer", "Error", JOptionPane.ERROR_MESSAGE);
return false;
}
}
Заранее спасибо за помощь!
Integer.parseInt
делает именно то, что вы хотите делать, и делает это хорошо. Он выдает исключение, если ввод не является целым числом, без каких-либо побочных эффектов. В случае сомнений проверьте исходный код: он не такой длинный/сложный и действительно надежный (android.googlesource.com/platform/libcore/+/refs/heads/master/). - person Shlublu   schedule 04.08.2014