当前位置: 首页 > 面试题库 >

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

孔阳平
2023-03-14
问题内容

在某些情况下,我需要将字符串转换为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{

}

接下来,您可以编写一个正则表达式模式,该模式用于检查String(复杂的值失败),然后在对字符串进行检查后调用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);
}

但是,这两种方法都将字符串解析两次,一次是测试字符串,第二次是获取值。根据获取无效字符串的频率而定,捕获异常可能更快。



 类似资料:
  • 问题内容: 我正在尝试从数据网格解析两个值。这些字段是数字,并且当它们有逗号(例如554,20)时,我无法在逗号后得到数字。我试过和。我怎样才能做到这一点? 问题答案: 如果它们是单独的值,请尝试以下操作: 如果它们是一个单一值(例如法语,其中一半写为0.5)

  • 问题内容: 如何在Java中将十六进制字符串转换为单精度浮点数? 例如,如何实现: 浮点数f = HexStringToFloat(“ BF800000”); // f现在应包含-1.0 我问这个是因为我尝试过: 但是我得到以下异常: java.lang.NumberFormatException:对于输入字符串:“ bf800000” 问题答案:

  • 问题内容: 如何从float转换为string或从string转换为float? 在我的情况下,我需要在2个值字符串(我从表中获得的值)和我计算出的浮点值之间进行断言。 我尝试从浮动到字符串: 但是断言失败 问题答案: 使用Java的类。 为了进行比较,将字符串转换为float并比较两个float总是更好。这是因为对于一个浮点数,存在多个字符串表示形式,与字符串相比,它们是不同的(例如“ 25”!

  • 问题内容: 我有一个,我需要一个。如何从一个转换为另一个? 问题答案: 好问题。我有以下五种 6种方法可以做到这一点。 注意:返回。因此有效地两者是相同的。 调用,这又设置了数组。 另一方面,调用以下程序包私有构造函数。 从源代码中的Java 8的源代码 因此似乎是最有效的方法,在这两个存储器和速度方面,用于转换char到String。

  • 我希望以下记录(当前显示为3.200000e 18,但实际上(希望)每个不同的长整数),使用pd.read_excel()创建,以不同的方式解释: 目前,它们似乎以科学符号字符串的形式出现: 然而,更糟糕的是,我不清楚这个数字是否已从我的. xlsx文件中正确读取: Excel(数据源)中的数字为320000000515952。 这与显示无关,我知道我可以在这里更改。这是关于保持底层数据在读取时的

  • 问题内容: 我想知道有什么方法可以将字符串转换为 SOAPMessage 吗? 让我说我有一个字符串如下: 当我这样做时: 一切正常。但是我还是从服务器上得到的。可能是什么原因?我更改了<和>以转义字符。 问题答案: 将String转换为输入流,然后将其读入SOAP消息工厂。 您可以在此处阅读有关如何执行此操作的信息。