Mam małą metodę, która między innymi konwertuje ciąg na liczbę całkowitą. Ponieważ ciąg jest parametrem metody, chcę się upewnić, że ten ciąg jest konwertowalny. Więc zastanawiałem się, jaki byłby najbezpieczniejszy i/lub najszybszy sposób.Konwersja łańcucha na liczby całkowite w bezpieczny sposób
Wersja A: Wystarczy zostawić tak jak jest i podjąć ryzyko (które staram się unikać)
public static int stringToInt(String param) {
return Integer.valueOf(param);
}
(pod względem szybkości, jaką za różnica to uczynić do wersji B i C)
Wersja B: Catch ex ception
public static int stringToInt(String param) {
try {
return Integer.valueOf(param);
} catch(NumberFormatException e) {
return -1;
}
}
Wersja C: Sprawdź każdą literę napisu, aby zobaczyć, czy jest to cyfra lub nie
public static int stringToInt(String param) {
for(char c : param.toCharArray()) {
if(!Character.isDigit(c))
return -1;
}
return Integer.valueOf(param);
}
Należy zauważyć, że parametr musi być liczba dodatnia i -1 mają być "wartością błędu" w moim małym programie, innymi słowy, wszystkie trzy wersje metod działałyby idealnie w moim programie.
Jestem bardzo otwarty na wszelkie inne sugestie, które możesz mi podać, więc możesz utworzyć własną wersję, jeśli uważasz, że jest lepsza.
Dziękuję bardzo za wsparcie z góry.
Pierwsza wersja jest tylko „ryzykowne”, jeśli błąd nie jest to poprawne zachowanie, a jeśli nie chcesz złapać 'NumberFormatException' gdzieś wyżej zmianę. Zgłaszanie wyjątków może być doskonale zdrową reakcją na złe dane wejściowe. –
Moim zdaniem, pierwszy jest najszybszy, ale rzuci wyjątek, jeśli umieścisz wartość inną niż numeryczna. Drugi jest najlepszy dla mnie, ponieważ ma haczyk, aby zapobiec wyjątkowi od zatrzymania twojego programu. ostatni, to tylko długa wersja drugiej. –
wersja C kończy się niepowodzeniem dla ujemnych liczb całkowitych – bengoesboom