私の問題はどこかのtryブロックに存在すると確信していますが、それを特定することはできません。私がやっていることは、ファイルから読み取り、入力をチェックすることです。入力が>0の場合、goodDataをインクリメントしたいのですが、そうでない場合は、値が0未満の場合はBPIllegalValueExceptionをスローするか、整数でない場合はInputMismatchExceptionをスローする必要があります。私はあなたたちが助けることができることを望んでいました。
編集:教授の指示:
プログラムでは、2種類の不良データを処理するために2つの例外が必要です。非整数読み取りの場合、nextInt()メソッドを使用してファイルから整数を読み取ることができます。データが整数でない場合、InputMismatchExceptionがスローされます。プログラムはこの例外をキャッチする必要があります。負の読み取りを処理するには、独自のExceptionクラスBPIllegalValueException(クラスを含むBPIllegalValueException.javaを記述する必要があります)を宣言し、負の値が読み取られたときにこの例外をスローすることができます。注:不良データが読み取られたときにプログラムを終了しないでください。したがって、不正なデータを処理するには、try/catchブロックを使用する必要があります。プログラムは、良好なBP読み取り値の数と不良データの数を(画面上に)出力することが期待されています。
私のコードは次のとおりです。
import java.io.*;
import java.util.*;
public class DemoEx {
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("BP.txt");
BufferedReader br = new BufferedReader(fr);
Scanner in = new Scanner(new FileReader("BP.txt"));
int badData = 0;
int goodData = 0;
int data;
String str = "";
while((str = br.readLine()) != null)
{
try
{
data = in.nextInt();
if(data>0)
goodData++;
else if(data<0)
throw new BPIllegalValueException(data);
else
throw new InputMismatchException();
}
catch(InputMismatchException ex)
{
badData++;
}
catch(BPIllegalValueException ex)
{
badData++;
}
}
System.out.println("The number of good data: " + goodData);
System.out.println("The number of bad data: " + badData);
}
}