Java 仅转换具有浮点值的字符串
我有一个名为MyText.txt的外部文本文件。我正在用java读取该文件,并试图仅提取浮点值。文本文件中的值和句子可能会有所不同。这就是我到目前为止所做的: MyFile.txt内容:Java 仅转换具有浮点值的字符串,java,Java,我有一个名为MyText.txt的外部文本文件。我正在用java读取该文件,并试图仅提取浮点值。文本文件中的值和句子可能会有所不同。这就是我到目前为止所做的: MyFile.txt内容: Harry have 21.00pounds. 11/25/2009 is my birthday. 我的代码是 for(int K = 1; K < myTextWords.length; K++){ String s = myTextWords[K]; try{ fl
Harry have 21.00pounds. 11/25/2009 is my birthday.
我的代码是
for(int K = 1; K < myTextWords.length; K++){
String s = myTextWords[K];
try{
float f = Float.valueOf(s.trim()).floatValue();
System.out.println("float f = " + f);
}
catch (NumberFormatException nfe){
System.err.println("NumberFormatException: " + nfe.getMessage());
}
}
float f = 21.0
float f = 11.0
float f = 25.0
float f = 2009.0
**文本值的内容可能会有所不同,而不是固定的 检查所有正则表达式模式
String decimalPattern = "([0-9]*)\\.([0-9]*)";
String number="20.00";
boolean match = Pattern.matches(decimalPattern, number);
if(match){
try{
float f = Float.valueOf(number.trim()).floatValue();
System.out.println("float f = " + f);
}
catch (NumberFormatException nfe){
System.err.println("NumberFormatException: " + nfe.getMessage());
}
}
使用Scanner类方法的方法(需要空格)
这样做,我确信可以将浮点值转换为整数。在这种情况下,可以转换为int的值是浮点值,而其他值不是。使用Scanner类的方法测试下一个标记是否为double。如果没有,请使用next()方法跳过它。在21.00之后没有空格将是一个问题。@NormR您建议在浮点值和字符串之间始终有空格?空格使Scanner类的方法更容易使用。我将在下面发布一个示例。float f=float.valueOf(s.trim()).floatValue();应该是float f=float.valueOf(number.trim()).floatValue();对吗?谢谢,但它仍以20.0打印。我需要它被打印为20.00System.out.printf(“%.2f”,数字);
String str = "Harry have 21.00 pounds. 11/25/2009 is my birthday.";
Scanner scnr = new Scanner(str);
while(scnr.hasNext()) {
if(scnr.hasNextFloat()) {
System.out.println(scnr.nextFloat()); // show it
}else{
scnr.next(); // skip
}
}