免責事項: これは宿題です
やあ、
目標: 人 (賃借人) が借りることができる、複数の部屋があるフラット/アパートを作成します。新しい賃借人を作成し(空き部屋がある場合)、退去したいときに賃借人を削除できます。
私が持っているもの:
Flat with rooms というカスタム配列を作成しました。
まず、配列を作成しました(配列のサイズが事前にわかっているため、ArrayListはありません)
Flat(int a) {
rooms = new Room[a];
for (int i = 0; i < rooms.length; i++) {
rooms[i] = new Room();
}
}
次に、Renter オブジェクトを部屋に追加しました。部屋が空かどうかを確認したいので、最初は NULL になります。
public class Room {
renter Renter;
Room() {
renter = null;
}
}
これで、null に設定された賃借人オブジェクトを含む部屋の配列ができました。
第二部:
Renterというクラスがあります。
賃借人は名前と姓で構成されている必要があります。そして、このデータはスキャナー クラスを使用して入力されます。私の賃借人クラスは次のようになります。
public Class Renter {
private String name;
private String lastName;
public void setName(String name) {
this.name = name;
}
public void setName(String lastName) {
this.lastName = lastName;
}
わかりました これまでのところとても良いです:
部屋が空いている場合は、部屋に賃借人を追加したいと考えています。
したがって、Flat クラスには、次のようなメソッド newRenter があります。
void newRenter() {
(if freeRooms > 0) {
for (int i = 0; i < rooms.length; i++) {
if (rooms[i].renter == null) {
rooms[i].renter = new Renter();
}
}
} else {
System.out.println("No rooms available");
}
今、私が迷っている部分です。この新しく作成されたレンター オブジェクトにスキャナー クラスを使用してデータを入力する方法がわかりません。
うまくいかない私の解決策
これを「別の方法」で行う必要があるように感じます。最初に空のオブジェクトを作成し、次にこれらに適切なデータを入力します。
たとえば、私の賃借人クラスでは、次のコンストラクターを使用できます。
Renter() {
name = "";
lastname = "";
}
この値に正しいデータを入力してください。そこで、セッターを作ろうと思いました。
public void setName(String name) {
this.name = name;
}
public void setLastname(String lastname) {
this.lastname = lastname;
次に、ユーザーと対話するクラスで、スキャナー クラスを使用し、これらのセッターに正しい情報を入力します。
public class userInput() {
String name;
String lastname;
public static String retrieveInput() {
Scanner input = new Scanner(System.in);
if (input.hasNextLine()) {
}
return input.nextLine();
}
public static void retrieveNameRenter() {
System.out.println("Please give your firstname:");
name = userInput();
System.out.println("Please give your lastname:");
lastname = userInput();
//GIVE THE SETTERS MY INFO
Renter.setLastname(lastname);
Renter.setname(name);
私が経験する問題の主な理由は、静的メソッド (retrieveNameRenter) を使用してオブジェクト (非静的) の値を取得したいからです。
今私の質問:
1) 私の解決策は理にかなっていますか?
2)そうであれば、どうすればこれらのエラーを修正できますか(私は多くの異なるクラス、パブリック、プライベートなどを試しました)
error: non-static method setLastname(String) cannot be referenced from a static context
Renter.setLastname(lastname);