簡體   English   中英

Java掃描器無法讀取

[英]Java Scanner won't read

我正在嘗試從具有以下格式的信息的文件中讀取:someName:aDoubleNumber並返回名稱和雙精度型。 我已經編寫了以下掃描儀,但是它不起作用,為什么有任何想法?

Scanner readFile = new Scanner("text.txt");
readFile.useDelimiter(":");
while (fileScanner.hasNext()) {
String name = readFile.next();
}

您不是從文件中讀取。 您正在讀取字符串“ text.txt”。 您首先需要一個文件。

    Scanner readFile = new Scanner(new File("text.txt")); // don't forget to catch FileNotFoundException!
    readFile.useDelimiter(":|\\n");
    while (fileScanner.hasNext()) {
       String name = readFile.next();
       double value = readFile.nextDouble();
       System.out.println(name + " " + value);
    }

我從您的注釋中提取了代碼並進行了格式化,我得到了

public class MyProject { 
    class FileInput { 
        Scanner readFile = new Scanner(new File("text.txt")); // don't forget to catch FileNotFoundException! 
        readFile.useDelimiter(":|\\n"); 
        while (fileScanner.hasNext()) { 
            String name = readFile.next(); 
            double value = readFile.nextDouble(); 
            System.out.println(name + " " + value); 
        } 
    }
}

現在您似乎遇到了問題-也許您是想將class FileInput設為public void fileInput() throws Exception 當我這樣做時,它會編譯。 現在我們需要一個main()方法來運行它! 所以我添加了這個:

public static void main(String[] args) throws Exception {
    MyProject proj = new MyProject();
    proj.fileInput();
}

現在,當我運行它時,我實際上遇到了一個錯誤。 這意味着我剛開始給您的代碼中確實存在問題。 當然,該代碼絕不打算被復制/粘貼,而僅僅是為了提供功能方面的想法。 無論如何,錯誤是:

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:840)
    at java.util.Scanner.next(Scanner.java:1461)
    at java.util.Scanner.nextDouble(Scanner.java:2387)
    at MyProject.fileInput(MyProject.java:9) <--- Where it happened in our code
    at MyProject.main(MyProject.java:16)

發生的行在parseDouble上。 因此,讓我們嘗試以其他方式進行操作。 我們可以將double作為原始文本獲取,然后將其解析為實際的double,如下所示:

    while (readFile.hasNext()) { 
        String name = readFile.next(); 
        String valueStr = readFile.next();
        double value = Double.parseDouble(valueStr); 
        System.out.println(name + " " + value); 
    } 

因此,整個完成的程序是:

import java.util.*;
import java.io.*;
public class MyProject { 
    public void fileInput() throws Exception { 
        Scanner readFile = new Scanner(new File("text.txt")); // don't forget to catch FileNotFoundException! 
        readFile.useDelimiter(":|\\n"); 
        while (readFile.hasNext()) { 
            String name = readFile.next(); 
            String valueStr = readFile.next();
            double value = Double.parseDouble(valueStr); 
            System.out.println("Name: " + name);
            System.out.println("Value: " + value);
            System.out.println(""); // blank line
        } 
    }

    public static void main(String[] args) throws Exception {
        MyProject proj = new MyProject();
        proj.fileInput();
    }

因此,對於輸入文件,文本為:

this:1234.5
that:321.0
the other:0.122

輸出是

C:\Documents and Settings\glowcoder\My Documents>java MyProject
Name: this
Value: 1234.5

Name: that
Value: 321.0

Name: the other
Value: 0.122


C:\Documents and Settings\glowcoder\My Documents>java MyProject
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM