java - 如何将字符串转换为 float 并避免在 java 中使用 try/catch?

标签 java floating-point try-catch

在某些情况下,我需要将字符串转换为 float 或其他一些数字数据类型,但有可能得到一些不可转换的值,例如“-”或“/”,我无法验证所有值事先删除它们。 我想避免在这件事上使用 try/catch,有没有其他方法可以在 java 中进行正确的转换?类似于 C# TryParse 的东西?

最佳答案

我能想到的最简单的事情是 java.util.Scanner 。然而,这种方法需要为每个字符串创建一个新的 Scanner 实例。

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

}

接下来,您可以编写一个正则表达式模式,用于检查字符串(复杂到无法通过太大的值),然后在检查字符串后调用 Integer.parseInt()。

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);
}

然而,这两个都解析字符串两次,一次是为了测试字符串,第二次是为了获取值。根据您获得无效字符串的频率,捕获异常可能会更快。

关于java - 如何将字符串转换为 float 并避免在 java 中使用 try/catch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8362027/

相关文章:

java - 如何在Java中使用Optional?

java - 从 RXTX 添加和获取通信端口

java - 将 Jython/JES 生成的影片保存在本地磁盘上

java - 在 Java 中迭代字典

iphone - Objective-C 浮点舍入

c++ - while循环中的浮点比较与模数

java - 仅显示 float 的小数

c++ - try/catch 抛出错误

Python 构造嵌套的 Try except 语句

php - 在 PHP 中使用 odbc_exec 时使用 try-catch 语句的意外行为