Search code examples
javafloating-pointtry-catch

how to convert a string to float and avoid using try/catch in java?


There are some situation that I need to convert string to float or some other numerical data-type but there is a probability of getting some nonconvertible values such as "-" or "/" and I can't verify all the values beforehand to remove them. and I want to avoid using try/catch for this matter , is there any other way of doing a proper conversion in java? something similar to C# TryParse?


Solution

  • The simplest thing I can think of is java.util.Scanner . However this approach requires a new Scanner instance for each String.

    String data = ...;
    Scanner n = new Scanner(data);
    if(n.hasNextInt()){//check if the next chars are integer
      int i = n.nextInt();   
    }else{
    
    }
    

    Next you could write a regex pattern that you use to check the String (complex to fail too big values) and then call Integer.parseInt() after checking the string against it.

    Pattern p = Pattern.compile("insert regex to test string here");
    String data = ...;
    Matcher m = p.matcher(data);
    //warning depending on regex used this may 
    //only check part of the string
    if(m.matches()){
      int i = Integer.parseInt(data);
    }
    

    However both of these parse the string twice, once to test the string and a second time to get the value. Depending on how often you get invalid strings catching an exception may be faster.