私の課題では、犯罪者の名前、犯罪、および有罪判決の年を入力するようにユーザーに促し、別のクラス (データベース) を使用して配列に格納する犯罪記録プログラムを作成するように求められます。クラスは次のようになります。
class Database {
String name;
String crime;
int year;
}
自分の情報を入力する方法を作ったのですが、リストを表示するためにテストしたところ、最後に入力した犯罪者しか表示されませんでした。なぜこれを行うのですか?
//method to input criminal records
public static void inputData() throws IOException {
arr = new Database[3];
Database temp = new Database();
for(int i = 0; i < arr.length; i++){
System.out.print("Enter criminal first and last name: ");
String name = br.readLine();
temp.name = name;
System.out.print("Enter crime: ");
String crime = br.readLine();
temp.crime = crime;
System.out.print("Enter the year of conviction: ");
int year = Integer.valueOf(br.readLine()).intValue();
temp.year = year;
// Copy the name, crime, year to the global variables
arr[i] = temp;
System.out.println(arr[i].name + " was convicted in the year " + arr[i].year + " for " + arr[i].crime + ".");
}
}
また、ユーザーが入力したキーワード (犯罪の種類) に基づいて順次検索を実行し、その種類の犯罪を行った犯罪者を表示する必要もあります。検索方法は次のとおりです。
//method to search data
public static int searchData() throws IOException{
System.out.print("Which crime would you like to select? (arson, theft, assault) ");
String searchKey = br.readLine();
for (int i = 0; i < arr.length; i++){
if (arr[i].crime.equals(searchKey)){
return i; //found it!
}
}
//key was not found
return -1;
}
先生の説明が下手なので、逐次検索について調べてみたのですが、その犯罪を犯した犯罪者の一覧を表示する方法がわかりません。