ステートメントを含む while ループ コード ブロックを記述する必要がある割り当てがありますtrycatch
。このtry
ブロックは入力ファイルから各行を取得し、isValid
作成したメソッドを呼び出して形式が正しいかどうかを確認し、ファイルから行を渡します。解析する行がもうない場合、runProgram
が に設定されているfalse
場合、while ループは終了します。ブロックは、catch
私が作成した例外をキャッチします。これまでのところ、
public static void main(String[] args)
{
File file;
Scanner inputFile;
String fileName;
Scanner scan = new Scanner(file);
fileName = scan.nextLine();
boolean runProgram = true;
while(runProgram)
{
try
{
// for loop to check each line of my file
// invoke isValid
// Check if it's the last line in the file, and end program if so
}
catch(BankAccountException e)
{
System.out.println("Account Exception. Do you wish to quit? y/n");
String quit = scan.nextLine();
if(quit.equals("y"))
runProgram = false;
else
runProgram = true;
}
}
}
ファイルを開き、次の行を確認し、私のisValid
方法 (StringTokenizer
正しい形式を確認するだけです) を使用し、ファイルの最後に達したときに閉じる方法がわかりません。
これが私のisValid
方法です:
private static boolean isValid(String accountLine) throws BankAccountException
{
StringTokenizer strTok = new StringTokenizer(accountLine, ";");
boolean valid = true;
if(strTok.countTokens() == 2)
{
if(strTok.nextToken().length() == 10)
{
if(!strTok.nextToken().matches(".*[0-9].*"))
{
valid = true;
}
}
}
else
valid = false;
return valid;
}
上記の方法についても質問があります。2 回呼び出した場合.nextToken()
、最初の反復で最初のトークンを処理し、2 番目の反復で 2 番目のトークンを処理することを期待してもよろしいですか? それとも、両方とも最初のトークンをチェックするだけですか?