У меня есть небольшой метод, который, помимо прочего, также преобразует строку в целое число. Поскольку строка является параметром метода, я хочу убедиться, что эта строка может быть конвертируемой. Поэтому я просто задавался вопросом, что будет самым безопасным и/или самым быстрым способом.Преобразование строки в целые числа безопасным способом
Версия A: Просто оставьте его как есть и взять на себя риски (которые я пытаюсь избежать)
public static int stringToInt(String param) {
return Integer.valueOf(param);
}
(с точки зрения скорости, какая разница будет это сделать до версии B и C)
Версия B: Поймай экс ception
public static int stringToInt(String param) {
try {
return Integer.valueOf(param);
} catch(NumberFormatException e) {
return -1;
}
}
Version C: Проверьте каждую букву строки, чтобы увидеть, если это значное число или нет
public static int stringToInt(String param) {
for(char c : param.toCharArray()) {
if(!Character.isDigit(c))
return -1;
}
return Integer.valueOf(param);
}
Обратите внимание, что параметр должен быть положительное число, а значение -1 должно быть «значением ошибки» в моей маленькой программе, другими словами, все три версии методов будут отлично работать в моей программе.
Я очень открыт для любого другого предложения, которое вы можете мне дать, поэтому не стесняйтесь создавать свою собственную версию, если считаете, что ваша лучше.
Благодарим вас за поддержку.
Первая версия является лишь «рискованным», если ошибка не правильное поведение, и если вы не хотите, чтобы поймать 'NumberFormatException' где-то выше изменения. Бросание исключений может быть совершенно здоровым ответом на плохой ввод. –
На мой взгляд, первый из них самый быстрый, но он будет генерировать исключение, если вы поместите не числовое значение. Второй - лучший для меня, поскольку у него есть улов, чтобы предотвратить исключение из остановки вашей программы. последний, это просто длинная версия второго. –
версия C сбой на отрицательных целых числах – bengoesboom