-1

私はまだJavaで新しく、BufferedReaderとFileWriterが実際にどのように機能するかを完全に理解できないため、これの一部がアップロードされました.このコードは、ユーザーが必要とする行を削除する必要がありますが、行の代わりに..

              Scanner titlerem= new Scanner (System.in);
              System.out.println("Enter student number:");
              title = titlerem.next ();

              System.out.print("Are you sure you want to delete it [Y/N]?");
              String tString = titlerem.next();
              char temp2 = tString.charAt(0);

   switch(temp2)
   {


  case('Y'):
    {

              // construct temporary file
              File inputFile = new File("phonebook.txt");
              File tempFile = new File(inputFile + " ");

              BufferedReader br = new BufferedReader (new FileReader("phonebook.txt"));
              PrintWriter Pwr = new PrintWriter(new FileWriter (tempFile));
              String line = null;


              while((line = br.readLine()) !=null) {
                  if(line.trim().startsWith(title)){
                      continue; 
                  }
                  else{
                      Pwr.println(line);
                      Pwr.flush();
                  }
              }

            // delete book file before renaming temp
            inputFile.delete();

            // close readers and writers
            Pwr.close();      
            br.close();


           //  rename temp file back to books.txt
            if(tempFile.renameTo(inputFile)){
                 System.out.println("Deletion succesful");
            }
            else
            {
             System.out.println("Update failed");
                  }
     }     



    case('N'):
    {
          System.out.print("Deletion did not proceed");
          break;
    }


       }             

誰でも私を助けることができますか?

4

1 に答える 1

2

case ステートメントがないことを除けば、あなたのコードは優れていると思いますbreakswitchしたがって、ファイルが適切に作成され、名前が変更されたとしても、次のように誤解を招く可能性がある 2 番目のケース ステートメントから常にメッセージが表示されます。

最初にファイル システムをチェックします。ブレーク ステートメントがなくても内容が編集されているかどうかを確認します。switchはいの場合は、break ステートメントを追加してケースを修正してください。

于 2013-07-15T17:23:29.113 に答える