从混合文件中读取双精度数



尝试仅在文件包含数字和单词的情况下读取双精度数。到目前为止,我完成的代码可以正确读取文件并打印带有数字和单词的完整列表。不确定如何排除单词并打印只读双精度数。

 public void doubleFromFile()
 {
              Scanner scan = new Scanner(System.in);
     Scanner fileScan;
     boolean validName = false;
    double num = 0.0;
     do
     {
         System.out.print("Enter file name: ");
         String str = scan.nextLine();
        try 
        {
            fileScan = new Scanner(new File(str));
            validName = true;
        while(fileScan.hasNextLine())
        {
            try
            {
            str = fileScan.nextLine();
            num = Double.parseDouble(str);
      System.out.println(str);
            }
             catch (NumberFormatException nfe) 
             {
                System.out.println("is not a Double number");
             }   

        }//end while
        }// end try

         catch (FileNotFoundException fnfe)
           {
              System.out.println("Invalid File name: enter again");
           }
     }while(!validName);
  }//end doubleFromFile method

这是一个工作测试

    Scanner sc = new Scanner("aaaa 1.1 bbbn3");
    sc.useLocale(Locale.US);
    while (sc.hasNext()) {
        if (sc.hasNextDouble()) {
            System.out.println(sc.nextDouble());
        } else {
            sc.next();
        }
    }

请注意,我使用了美国区域设置,以便扫描仪插入"."作为小数分隔符,在我的区域设置(默认)中它是","。另请注意,1.1 和 3(整数)均可由 nextDouble 识别

最新更新