ユーザーが指定した数までの円周率を出力するプログラムを作成しています。ユーザーからの入力を読み取ることはできますが、テキスト ファイルを読み取ることはできますが、桁数を出力すると、間違った数値が出力されます。
「Pi.txt」には「3.14159」が含まれています。これが私のコードです:
package pireturner;
import java.io.*;
import java.util.Scanner;
class PiReturner {
static File file = new File("Pi.txt");
static int count = 0;
public PiReturner() {
}
public static void readFile() {
try {
System.out.print("Enter number of digits you wish to print: ");
Scanner scanner = new Scanner(System.in);
BufferedReader reader = new BufferedReader(new FileReader(file));
int numdigits = Integer.parseInt(scanner.nextLine());
int i;
while((i = reader.read()) != -1) {
while(count != numdigits) {
System.out.print(i);
count++;
}
}
} catch (FileNotFoundException f) {
System.err.print(f);
} catch (IOException e) {
System.err.print(e);
}
}
public static void main(String[] args ) {
PiReturner.readFile();
}
}
ユーザーが印刷する桁数として 3 を入力すると、「515151」が印刷されます。エラーがなく、読み取り方法をテストし、正常に動作するため、なぜこれが行われるのかわかりません。また、何が間違っているのかわかりません。どんな助けでも喜んでいただければ幸いです。前もって感謝します。
ちなみに、整数 'i' を char にキャストすると、333 が出力されます (入力が 3 であると仮定)。