0

ファイルに数字と単語が含まれている場合にのみ、二重の数字を読み取ろうとしています。これまでに行ったコードは、ファイルから適切に読み取り、数字と単語を含む完全なリストを出力します。単語を除外して印刷する方法がわかりません。二重の数字のみを読み取ります。

 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
4

1 に答える 1

1

動作テストはこちら

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

Scanner が "." を解釈できるように、US ロケールを使用したことに注意してください。小数点として、私のロケール(デフォルト)では「、」です。また、1.1 と 3 (整数) の両方が nextDouble によって認識されることに注意してください。

于 2012-11-28T20:44:51.257 に答える