RandomAccessFileアプリケーションがdeleteByNameメソッドでうまく機能していません。基本的に、このメソッドでストアでStudentを検索し、RandomAccessFileから削除する必要があります。検索ビットは問題ありませんが、RandomAccessFileは、学生を完全に削除するのではなく、詳細がnullである従業員を表示します。誰か助けてもらえますか?
これが私のコードです:
//---------------------------------------------------------------------------------------
// Name: Case 3: Delete by Name.
// Description: Choice 3 gives the user an option to delete an employee by name.
//---------------------------------------------------------------------------------------
case 3:
System.out.println("Delete by Name.");
Student studentDelete = MenuMethods.userInputByName();
details.searchByName(studentDelete.getStudentName());
details.remove(studentDelete.getStudentName());
file.write(studentDelete.toString().getBytes());
break;
StudentStore
// ---------------------------------------------------------------------------------------
// Name: Search by Name.
// ---------------------------------------------------------------------------------------
public Student searchByName(String studentName)
{
Student student = map.get(studentName);
System.out.println(student);
return student;
}
public void write(RandomAccessFile file) throws IOException
{
for (Student student : map.values())
{
byte[] bytes = student.toString().getBytes();
for(byte byteWrite : bytes)
{
file.writeByte(byteWrite);
}
}
}
public void readAll(RandomAccessFile file) throws IOException
{
/*final int Record_Length = 30;
int recordNumber = 0;
file.seek((recordNumber) * Record_Length);
String code ="";
for(int i = 0; i < 30; i++)
{
code += file.readLine() + "\n";
}
System.out.println(code);*/
file.seek(0);
String code;
while((code = file.readLine())!=null)
System.out.println(code);
}
// ---------------------------------------------------------------------------------------
// Name: Remove.
// ---------------------------------------------------------------------------------------
public Student remove(String key)
{
// Remove the Employee by name.
if (map.containsKey(key))
return map.remove(key); // if it is there remove and return
else
return null; // if its not there return nothing.
}
MenuMethods
//---------------------------------------------------------------------------------------
// Name: Imports.
// Description: To allow the use of different Java classes.
//---------------------------------------------------------------------------------------
import java.util.Scanner;
//---------------------------------------------------------------------------------------
public class MenuMethods
{
private static Scanner keyboard = new Scanner(System.in);
//---------------------------------------------------------------------------------------
// Methods for the Company Application menu.
//---------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------
// Name: getMenuChoice.
// Description: Method for validating the choice.
//---------------------------------------------------------------------------------------
public static int getMenuChoice(String menuString, int limit,String prompt, String errorMessage)
{
System.out.println(menuString);
int choice = inputAndValidateInt(1, limit, prompt, errorMessage);
return choice;
}
//---------------------------------------------------------------------------------------
// Name: inputAndValidateInt.
// Description: This method is used in the getMenuChoice method.
//---------------------------------------------------------------------------------------
public static int inputAndValidateInt(int min, int max, String prompt,String errorMessage)
{
int number;
boolean valid;
do
{
System.out.print(prompt);
number = keyboard.nextInt();
valid = number <= max && number >= min;
if (!valid)
{
System.out.println(errorMessage);
}
} while (!valid);
return number;
}
//---------------------------------------------------------------------------------------
// Name: userInput
// Description: This method is used in the MainApp to give the user capability to enter
// the details when adding details of an employee into the store.
//---------------------------------------------------------------------------------------
public static Student userInput()
{
String temp = keyboard.nextLine();
Student s = null;
System.out.println("Please enter the Student Name:");
String studentName = keyboard.nextLine();
System.out.println("Please enter the Student ID:");
String studentId = keyboard.nextLine();
System.out.println("Please enter the Student E-mail address:");
String studentEmail = keyboard.nextLine();
System.out.println("Please enter the Student telephone number:");
String studentTelephoneNumber = keyboard.nextLine();
return s = new Student(studentName, studentId, studentEmail,studentTelephoneNumber);
}
//---------------------------------------------------------------------------------------
// Name: userInputByName.
// Description: This method is used in the MainApp to give the user capability to search by name.
//---------------------------------------------------------------------------------------
public static Student userInputByName()
{
// String temp is for some reason needed. If it is not included
// The code will not execute properly.
String temp = keyboard.nextLine();
Student s = null;
System.out.println("Please enter the Student Name:");
String studentName = keyboard.nextLine();
return s = new Student(studentName);
}
//---------------------------------------------------------------------------------------
// Name: userInputByEmail
// Description: This method is used in the MainApp to give the user capability to search by email.
//---------------------------------------------------------------------------------------
public static String userInputByEmail()
{
// String temp is for some reason needed. If it is not included
// The code will not execute properly.
String temp = keyboard.nextLine();
Student s = null;
System.out.println("Please enter the StudentEmail:");
String studentEmail = keyboard.nextLine();
// This can use the employeeName's constructor because java accepts the
// parameters instead
// of the name's.
return studentEmail;
}
//---------------------------------------------------------------------------------------
}
ストアはハッシュマップを使用して構成されています。