私はHashMapに保存される新しい人物を作成できるプログラムを作成しようとしています。さらに、あなたが保管したいと思うこれらの人々の向こう側にDVDを貸すこともできます。この問題は、プログラムが新しい名前をHashMapに格納することを単に拒否したときに、NyPersonメソッドを使用しようとしているときに発生します。HashMapに値を格納しようとするときにいくつかの問題がある
ここで(ロトのコードのは、そう私と一緒にクマ)私のコードです:
クラスnyPersonメソッドで:
import java.util.*;
class DVDAdministrasjon {
private HashMap<String, Person> navneliste = new HashMap<String, Person>();
public void nyPerson(String navnPerson) {
if(navneliste.containsKey(navnPerson)) {
System.out.println(navnPerson + " er allerde i listen");
} else {
Person nyPerson = new Person(navnPerson);
navneliste.put(navnPerson, nyPerson);
}
}
public void kjop(String navnPerson, String navnDVD) {
if (navneliste.containsKey(navnPerson)) {
navneliste.get(navnPerson).kjop(navnDVD);
} else {
System.out.println("Det er ingen personer som heter " + navnPerson);
}
}
public void laan (String navnLaaner, String navnUtlaaner, String navnDVD) {
if (navnLaaner.equals(navnUtlaaner)) {
System.out.println("Du kan ikke laane en DVD fra deg selv");
} else if (navneliste.containsKey(navnLaaner) &&
navneliste.containsKey(navnUtlaaner)) {
Person utlaaner = navneliste.get(navnUtlaaner);
Person laaner = navneliste.get(navnLaaner);
if (utlaaner.ledig(navnDVD)) {
laaner.laan(navnDVD, utlaaner);
} else {
System.out.println("Den DVD-en er utlaant eller eies ikke av denne personen");
}
} else {
System.out.println("Sjekk at laaner og utlaaner eksisterer");
}
}
public void retur (String navnPerson, String navnDVD) {
if (navneliste.containsKey(navnPerson)) {
navneliste.get(navnPerson).retur(navnDVD);
} else {
System.out.println("Det er ingen personer som heter " + navnPerson);
}
}
public void visPerson(String navnPerson) {
if (navnPerson.equals("*")) {
for (Person person : navneliste.values()) {
person.printDVDer();
}
} else if (navneliste.containsKey(navnPerson)){
navneliste.get(navnPerson).printDVDer();
} else {
System.out.println("Det er ingen personer som heter " + navnPerson);
}
}
public void visOversikt() {
for (Person person : navneliste.values()) {
person.oversikt();
}
}
public void printPersoner(){
for(Person person : navneliste.values())
System.out.println(person);
}
public void printArkiv(String navnPerson) {
navneliste.get(navnPerson).printArkiv();
}
public void avslutt(){
System.out.println("Goodbye");
System.exit(0);
}
}
私のPersonクラス:
import java.util.*;
class Person {
private String navn;
private HashMap<String, DVD> arkiv = new HashMap<String, DVD>();
private HashMap<String, DVD> laante = new HashMap<String, DVD>();
private HashMap<String, DVD> utlaante = new HashMap<String, DVD>();
public Person(String navn) {
this.navn = navn;
}
public void kjop(String navn) {
if (arkiv.containsKey(navn)) {
System.out.println("Du eier allerede denne dvd'en");
} else {
DVD nyDVD = new DVD(navn, this);
arkiv.put(navn, nyDVD);
}
}
public void laan(String navnDVD, Person utlaaner) {
laante.put(navnDVD, utlaaner.utlaan(navnDVD));
}
public DVD utlaan(String navnDVD) {
DVD utlaanDVD = arkiv.get(navnDVD);
utlaante.put(navnDVD, utlaanDVD);
return utlaanDVD;
}
public void retur(String navnDVD) {
if (laante.containsKey(navnDVD)) {
laante.remove(navnDVD).retur();
} else {
System.out.println(navn + " laaner ikke denne dvd-en");
}
}
public void faaTilbake(String tilbake) {
utlaante.remove(tilbake);
}
public boolean ledig(String navnDVD) {
return (arkiv.containsKey(navnDVD) && !utlaante.containsKey(navnDVD));
}
public void printArkiv() {
for (DVD dvd : arkiv.values()) {
System.out.println(dvd);
}
}
public void printDVDer() {
System.out.println("\n" + navn + ":");
System.out.println("Eier:");
for (String key : arkiv.keySet()) {
System.out.println("+ " + key);
}
System.out.println("Laaner:");
for (String key : laante.keySet()) {
System.out.println("- " + key);
}
}
public void oversikt() {
System.out.println("\n" + navn + ":");
System.out.println("Eier: " + arkiv.size());
System.out.println("Laant: " + laante.size());
System.out.println("Utlaant: " + utlaante.size());
}
public String toString() {
return this.navn;
}
}
DVDクラス:
import java.util.*;
class DVD {
private Person eier;
private Person laaner;
private String navn;
public DVD(String navn, Person eier) {
this.navn = navn;
this.eier = eier;
this.laaner = null;
}
public Person getEier() {
return this.eier;
}
public String toString() {
return this.navn;
}
public void retur() {
eier.faaTilbake(navn);
}
}
再(これまでに)私のメインです:
import java.util.*;
public class DVDMain{
public static void main(String [] args){
Scanner tastatur = new Scanner(System.in);
String alternativ = "";
while(!alternativ.equals("7")){
System.out.println("MENY FOR DVD-ADMINISTRASJON");
System.out.println("1. Ny person");
System.out.println("2. Kjop");
System.out.println("3. Laan");
System.out.println("4. Vis");
System.out.println("5. Oversikt");
System.out.println("6. Retur");
System.out.println("7. Avslutt");
alternativ = tastatur.nextLine();
DVDAdministrasjon dvdadmin = new DVDAdministrasjon();
if (alternativ.equals("1")){
System.out.println("Hva heter den nye personen?");
String nyperson = tastatur.nextLine();
dvdadmin.nyPerson(nyperson);
System.out.println(nyperson + " er registrert!");
}
else if (alternativ.equals("2")){
System.out.println("Hvem har kjopt DVD-en?");
String navnPerson = tastatur.nextLine();
System.out.println("Hva er tittelen paa DVD-en?");
String navnDVD = tastatur.nextLine();
dvdadmin.kjop(navnPerson, navnDVD);
}
else if(alternativ.equals("3")){
System.out.println("Hvem vil laane DVD-en?");
String navnLaaner = tastatur.nextLine();
System.out.println("Hvem skal DVD-en laanes fra?");
String navnUtlaaner = tastatur.nextLine();
System.out.println("Hva er tittelen paa DVD-en?");
String navnDVD = tastatur.nextLine();
dvdadmin.laan(navnLaaner, navnUtlaaner, navnDVD);
}
}
}
}
「プログラム拒否」とはどういう意味ですか? – Andreas
必ずしも拒否する必要はありませんが、特定の文字列をHashMap navnelisteの値として追加することはありません。 –
新しいメニューオプションを選択するたびに、新しい 'DVDAdministrasjon'を作成します。新しい人物は 'HashMap'に追加されます。毎回地図全体を投げ捨てるだけです。おそらく、あなたはメニューループの外側に*移動したいかもしれません? – Andreas