Guest User

Untitled

a guest
Nov 21st, 2017
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. public static int string2Int(String s, int defaultValue) {
  2. int i=defaultValue;
  3. try {
  4. i=Integer.parseInt(s);
  5. }
  6. catch(Exception ex) {
  7. }
  8. return i;
  9. }
  10.  
  11. private static long getNumber(String str, long defaultValue) {
  12. if (str == null)
  13. return defaultValue;
  14.  
  15. str = str.trim();
  16. if (str.length() == 0)
  17. return defaultValue;
  18.  
  19. boolean isNegative;
  20. if (str.charAt(0) == '-' || str.charAt(0) == '+') {
  21. if (str.length() == 1)
  22. return defaultValue;
  23. else
  24. isNegative = str.charAt(0) == '-';
  25. } else if (Character.isDigit(str.charAt(0)))
  26. isNegative = false;
  27. else
  28. return defaultValue;
  29.  
  30. final int radix = 10;
  31. final int zero_number_code = 49;
  32. final int nine_number_code = 57;
  33. long result = 0;
  34. boolean isFloat = false;
  35.  
  36. for (int i = Character.isDigit(str.charAt(0)) ? 0 : 1; i < str.length(); i++) {
  37. char currentSymbol = str.charAt(i);
  38. if (currentSymbol == '.')
  39. if (isFloat)
  40. return defaultValue;
  41. else
  42. isFloat = true;
  43.  
  44. if (currentSymbol != '.' &&
  45. (currentSymbol > nine_number_code || currentSymbol < zero_number_code))
  46. return defaultValue;
  47.  
  48. if (!isFloat) {
  49. result *= radix;
  50. result += (currentSymbol + 1 - zero_number_code);
  51. }
  52. }
  53.  
  54. return isNegative ? -result : result;
  55. }
  56.  
  57. System.out.println(getNumber("142", 10));
  58. System.out.println(getNumber("-72", 10));
  59. System.out.println(getNumber("+19", 10));
  60. System.out.println(getNumber("-19.11", 10));
  61. System.out.println(getNumber("+19.16", 10));
  62. System.out.println(getNumber("+19+.16", 10));
  63. System.out.println(getNumber("+1.9+16", 10));
  64. System.out.println(getNumber("1.1.16", 10));
Add Comment
Please, Sign In to add comment