someName:aDoubleNumber の形式で書かれた情報を持つファイルから読み取ろうとしています。 私は以下のスキャナを書いたことがありますが、それは動作しません。Javaスキャナが読み取られません
Scanner readFile = new Scanner("text.txt");
readFile.useDelimiter(":");
while (fileScanner.hasNext()) {
String name = readFile.next();
}
someName:aDoubleNumber の形式で書かれた情報を持つファイルから読み取ろうとしています。 私は以下のスキャナを書いたことがありますが、それは動作しません。Javaスキャナが読み取られません
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);
}
}
}
は今、あなたは問題を抱えているように思えます - おそらくあなたは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
}
今、私のコードは次のようになります: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
あなたの新しいコードと2)正確なコピー/ペーストの例外通知があなたの質問を更新します。 – corsiKa
@James、私はここであなたの最新のコメントに関する私の答えを更新しました。あなたはまだこれについて何か質問がある場合はお知らせください。 – corsiKa
Whのでしたあなたは「それは働かない」という意味ですか? (見た目からはダブルスを読み込もうとしていません) – Jeremy
readFileパッケージが見つかりません。そして私はダブルスを読むためにそれを得る方法を知らない。 – James
あなたはこれを見ましたか? http://download.oracle.com/javase/6/docs/api/java/util/Scanner.html – Jeremy