Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅转换具有浮点值的字符串_Java - Fatal编程技术网

Java 仅转换具有浮点值的字符串

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

我有一个名为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{
        float f = Float.valueOf(s.trim()).floatValue();
        System.out.println("float f = " + f);
    }
    catch (NumberFormatException nfe){
        System.err.println("NumberFormatException: " + nfe.getMessage());
    }
} 
  • 2009年11月25日也被转换为字符串并打印为

    float f = 21.0
    
    float f = 11.0
    float f = 25.0
    float f = 2009.0 
    
  • 如何限制程序仅提取和转换类似于21.00、190.20的字符串


    **文本值的内容可能会有所不同,而不是固定的

    检查所有正则表达式模式

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