0

ファイルの double 値から読み取り、Scannerこの目的で使用してみました。

それはスローしInputMismatchExceptionます:

"input.txt"  java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:909)
    at java.util.Scanner.next(Scanner.java:1530)
    at java.util.Scanner.nextDouble(Scanner.java:2456)

なぜこれが起こるのか理解できませんか?

コード:

public class Largest
{
    public static void main(String[] args)
    throws FileNotFoundException
    {
        String filename = "input.txt"; 
        Scanner in = new Scanner(filename);

        double largest = in.nextDouble();
        while (in.hasNextDouble())
        {
            double input = in.nextDouble();
            if (input > largest)
            {
                largest = input;
            }
        }
        in.close();
        System.out.println("Largest value: " + largest);
    }
}

更新:
に変更しようとdouble largest = in.nextDouble();しましdouble largest = 0;
たが、入力が間違っています:

filename     Actual              Expected
-------------------------------------------------------------
"input.txt"  Largest value: 0.0  Largest value: 1.343239923E9
"input2.txt" Largest value: 0.0  Largest value: 40.1   

ファイルの内容は次のようになります。

89343455
46746846
56.78
55486411

この問題を解決するにはどうすればよいですか?

4

3 に答える 3

1

私は解決策を見つけました - File オブジェクトを作成し、それをスキャナークラスにフィードする必要があります:

String filename = "input.txt"; 
File newFile = new File(filename);
Scanner in = new Scanner(newFile);
于 2013-07-01T19:04:21.133 に答える
0
  • 最大最初のdoubleに初期化します (型を確認した後)
  • 正しい区切り文字を使用して入力を解析します ( \n= 改行)

    String filename = "input.txt"; 
    Scanner in = new Scanner(filename).useDelimiter("\\n");
    
    double largest;
    if (in.hasNextDouble())
        largest = in.nextDouble();
    
    while (in.hasNextDouble())
    {
        double input = in.nextDouble();
        if (input > largest)
        {
            largest = input;
        }
    }
    
于 2013-07-01T15:02:25.297 に答える