瓶の中のビー玉の数に最も近い人物の ID 番号を表示するプログラムを作成しました。これはプログラムです:
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class SuperMarbles
{
public static void main(String[] args) throws IOException
{
int guess = 0;
int contestants = 0;
int num_marbles, answer, id, winner = 0;
Scanner scanner = new Scanner(new FileReader("promo.txt"));
PrintWriter printWriter = new PrintWriter(new FileWriter("winner.txt"));
num_marbles = scanner.nextInt();
id = scanner.nextInt();
while (id != 0)
{
answer = scanner.nextInt();
if (answer > guess && answer <= num_marbles)
{
guess = answer;
winner = id;
id = scanner.nextInt();
contestants++;
}
}
if (guess == 0)
{
printWriter.printf("There are %d contestants", contestants);
printWriter.printf("\nThere are no winners");
}
else
{
printWriter.printf("There are %d contestants", contestants);
printWriter.printf("\nThe winner is ID#%d", winner);
}
scanner.close();
printWriter.close();
}
}
入力
ファイル「promo.txt
」
の
データ
は
次
の
とおり
です
。
今、私はJCreatorを使用しています。コンパイルしようとすると、「ビルド出力」の下にエラーが表示されず、「プロセスが完了しました」が表示されますが、「一般出力」の下には次のように表示されます。
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at SuperMarbles.main(SuperMarbles.java:25)
Process completed.
また、出力ファイル「winner.txt」は作成されていません。Javaに関してはかなりの初心者ですが、どんな助けでも大歓迎です。