2011-02-18 18 views
1

someName:aDoubleNumber の形式で書かれた情報を持つファイルから読み取ろうとしています。 私は以下のスキャナを書いたことがありますが、それは動作しません。Javaスキャナが読み取られません

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

Whのでしたあなたは「それは働かない」という意味ですか? (見た目からはダブルスを読み込もうとしていません) – Jeremy

+0

readFileパッケージが見つかりません。そして私はダブルスを読むためにそれを得る方法を知らない。 – James

+0

あなたはこれを見ましたか? http://download.oracle.com/javase/6/docs/api/java/util/Scanner.html – Jeremy

答えて

7

あなたはファイルから読んでいません。文字列 "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); 
     } 
    } 
} 

は今、あなたは問題を抱えているように思えます - おそらくあなたはpublic void fileInput() throws Exceptionするclass FileInputを意味しましたか?私がこれをすると、コンパイルされます。これを実行するには、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を取得し、このような実際の二重にそれを解析することができます

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

今、私のコードは次のようになります:public class MyProject {class FileInput {スキャナのreadFile =新しいスキャナ(新しいファイル( "text.txt")); // FileNotFoundExceptionをキャッチすることを忘れないでください! readFile.useDelimiter( ":| \ n n"); while(fileScanner.hasNext()){ String name = readFile.next(); double値= readFile.nextDouble(); System.out.println(名前+ "" +値); } }}ただし、例外が発生します。ご迷惑をおかけして申し訳ございません。 – James

+1

あなたの新しいコードと2)正確なコピー/ペーストの例外通知があなたの質問を更新します。 – corsiKa

+0

@James、私はここであなたの最新のコメントに関する私の答えを更新しました。あなたはまだこれについて何か質問がある場合はお知らせください。 – corsiKa

関連する問題