私のプログラムでは、入力ファイルからどのような種類のトークンが読み込まれるのかが分かります。私の2番目の方法は、ユーザーが停止を入力するまで、キーボードからの入力を出力ファイルに書き込むものとします。問題は、私の最初の方法は整数を正しい型に出力しないことです。私の2番目の方法は、出力ファイルに停止するだけです。ここに私のコードです。どんな助けでも大いに訴えられるでしょう。あなたのループではファイルの入出力方法の問題
public class R16 {
public void readFile(String inputFile) {
try {
File in = new File(inputFile);
Scanner scan = new Scanner(in);
while (scan.hasNext()) {
if (scan.hasNextInt()) {
System.out.println("Integer: " + scan.nextInt());
}
if (scan.hasNext()) {
System.out.println("String: " + scan.next());
}
if (scan.hasNextDouble()) {
System.out.println("Double: " + scan.nextDouble());
}
}
scan.close();
} catch (IOException e) {
System.out.println("Error, not good");
}
}
public void writeFile(String outputFile) {
try {
File out = new File(outputFile);
PrintWriter w = new PrintWriter(out);
Scanner scan= new Scanner(System.in);
System.out.print("Enter Text: ");
while(!scan.next().equals("stop")){
w.print(scan.next());
}
w.close();
scan.close();
} catch (IOException e) {
System.out.println("Error, it just got real");
}
}
public static void main(String[] args) {
R16 test = new R16();
test.readFile(args[0]);
test.writeFile(args[1]);
}
}
おそらく、2番目の2つの 'if'文を' else if'文にして、 'hasNext()'の前に 'hasNextDouble()'をチェックするべきでしょう。実際には、これは 'hasNext()'を最後に冗長にします。これは 'while'ループですでにチェックしているので、単純な' else'で十分です。 – Andreas
ありがとうございます。 –