1

ステートメントを含む while ループ コード ブロックを記述する必要がある割り当てがありますtry­catch。この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 番目のトークンを処理することを期待してもよろしいですか? それとも、両方とも最初のトークンをチェックするだけですか?

4

1 に答える 1