Hi.
Ich steh gerade bei meinem Programm etwas auf dem Schlauch, oder besser gesagt ich weiß nicht wie ich die HashMap in meinem Programm sinnvoll nutzen kann.
Ich zeig am besten erstmal mein(e) Programm(e). Es handelt sich dabei um ein Bankprogramm.
Zuerst der Server:
Das Programm für den Vorstand der Bank:
Das Progamm für den Kunden:
Das Programm der Bank:
Und die dazugehörigen Interfaces:
Der Server läuft auf localhost und er funktioniert. Wenn ich das Programm des Vorstandes starte und ein Konto mit
einrichte dann funktioniert dies auch.
Wenn ich jetzt im Programm des Kunden etwas auf ein Konto einzahlen will mit
dann funktioniert das schon nicht mehr.
Ich schätze mal das Problem ist das ich nicht weiß wie ich beim Methodenaufruf dem richtigen Namen die richtige Kontonummer zuweisen kann. Immer wenn ich die Methode zum Einzahlen auf ein Konto aufrufe wird direkt "Das Konto existiert nicht" ausgegeben. Es muss doch irgendwie möglich sein eine Verbindung zwischen der Kontonummer, die ich als Parameter übergebe und den Key "name" herzustellen.
Soweit ich das mit HashMap verstanden habe ist das der erste Typ in der HashMap der Key und der zweite Typ eben Value ist. So in etwa
Gruß,
Dynamaik
Ich steh gerade bei meinem Programm etwas auf dem Schlauch, oder besser gesagt ich weiß nicht wie ich die HashMap in meinem Programm sinnvoll nutzen kann.
Ich zeig am besten erstmal mein(e) Programm(e). Es handelt sich dabei um ein Bankprogramm.
Zuerst der Server:
Java:
package de.edu.hbrs.rmi.server;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.RemoteServer;
import java.rmi.server.UnicastRemoteObject;
import de.edu.hbrs.rmi.IBank;
import de.edu.hbrs.rmi.IKunde;
import de.edu.hbrs.rmi.client.BankProgramm;
public class Server {
public static void main(String[] args) throws RemoteException {
Registry reg = LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
IBank stub = (IBank) UnicastRemoteObject.exportObject(
new BankProgramm(), 0);
IKunde stub1 = (IKunde) UnicastRemoteObject.exportObject(
new BankProgramm(), 0);
reg.rebind("IBank", stub);
reg.rebind("IKunde", stub1);
System.out.println(reg);
RemoteServer.setLog(System.out);
}
}
Das Programm für den Vorstand der Bank:
Java:
ackage de.edu.hbrs.rmi.client;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import de.edu.hbrs.rmi.IBank;
public class VorstandProgramm {
public static void main(String[] args) throws RemoteException, NotBoundException {
Registry reg = LocateRegistry.getRegistry("127.0.0.1",
Registry.REGISTRY_PORT);
IBank bank = (IBank) reg.lookup("IBank");
}
}
Das Progamm für den Kunden:
Java:
package de.edu.hbrs.rmi.client;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import de.edu.hbrs.rmi.IKunde;
public class KundenProgramm {
public static void main(String[] args) throws RemoteException, NotBoundException {
Registry reg = LocateRegistry.getRegistry("127.0.1.1",
Registry.REGISTRY_PORT);
IKunde kunde = (IKunde) reg.lookup("IKunde");
kunde.getKontostand(1);
}
}
Das Programm der Bank:
Java:
package de.edu.hbrs.rmi.client;
import java.rmi.RemoteException;
import java.util.HashMap;
import java.util.Map;
import de.edu.hbrs.rmi.IBank;
import de.edu.hbrs.rmi.IKunde;
public class BankProgramm implements IBank, IKunde {
double betrag;
Integer kontoNr = 0;
String name;
HashMap<String, Integer> konten = new HashMap<String, Integer>();
@Override
public double getKontostand(int kontoNr) throws RemoteException {
if (konten.get(name) != null) {
System.out.println("Ihr Kontostand beträgt:" + betrag);
}
return betrag;
}
@Override
public double einzahlen(double betrag, int kontoNr) throws RemoteException {
if (konten.get(name) != null) {
System.out.println("Betrag wird verbucht.");
this.betrag += betrag;
} else System.out.println("Konto existiert nicht");
return betrag;
}
@Override
public double auszahlen(double betrag, int kontoNr) throws RemoteException {
this.betrag -= betrag;
return betrag;
}
@Override
public void keinrichten(String name) throws RemoteException {
if (konten.get(name) != null) {
System.out.println("Das Konto existiert bereits!");
} else {
kontoNr += 1;
konten.put(name, kontoNr);
System.out.println(name + kontoNr);
}
}
@Override
public void klöschen(int kontoNr) throws RemoteException {
konten.remove(kontoNr);
}
@Override
public void getKonten() throws RemoteException {
System.out.println(konten.containsValue(kontoNr));
}
Und die dazugehörigen Interfaces:
Java:
package de.edu.hbrs.rmi;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface IBank extends Remote {
public void keinrichten(String name)
throws RemoteException;
public void klöschen(int kontoNr)
throws RemoteException;
public void getKonten()
throws RemoteException;
}
Java:
package de.edu.hbrs.rmi;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface IKunde extends Remote {
public double getKontostand(int kontoNr)
throws RemoteException;
public double einzahlen(double betrag, int kontoNr)
throws RemoteException;
public double auszahlen(double betrag, int kontoNr)
throws RemoteException;
}
Der Server läuft auf localhost und er funktioniert. Wenn ich das Programm des Vorstandes starte und ein Konto mit
Java:
bank.keinrichten("xyz");
Wenn ich jetzt im Programm des Kunden etwas auf ein Konto einzahlen will mit
Java:
kunde.einzahlen(500, 1);
Ich schätze mal das Problem ist das ich nicht weiß wie ich beim Methodenaufruf dem richtigen Namen die richtige Kontonummer zuweisen kann. Immer wenn ich die Methode zum Einzahlen auf ein Konto aufrufe wird direkt "Das Konto existiert nicht" ausgegeben. Es muss doch irgendwie möglich sein eine Verbindung zwischen der Kontonummer, die ich als Parameter übergebe und den Key "name" herzustellen.
Soweit ich das mit HashMap verstanden habe ist das der erste Typ in der HashMap der Key und der zweite Typ eben Value ist. So in etwa
Java:
HashMap<Key, Value> konten = new HashMap<Key, Value>();
Gruß,
Dynamaik