IcocaI
Mitglied
Hallo liebe leut,
hab ein Problem mit meinem code ... und bin fast am verzweifeln wie fast jeder programmierer XD ... naja zur sache ... erstmal den code:
dann gibs da noch die Lese Klasse was hauptsächlich für die eingabe da ist ...
ist etwas lang ^^ ...
im internet hab ich was zu dem fehler gefunden nur das problem ist es hat mir nicht wirklich geholfen das problem zu lösen.
Hier ein auszug:
es steht da zwar das man eine andere referenz oder mit einem new-operator initialisiert werden muss. aber wie !! bin frustriert ...
hab ein Problem mit meinem code ... und bin fast am verzweifeln wie fast jeder programmierer XD ... naja zur sache ... erstmal den code:
Java:
package Main;
import Automat.Geldautomat;
import Automat.Konto;
import Automat.Kontoverwalter;
import lese.Lese;
public class Main {
/*private double betrag;
public void setBetrag(double b){
this.betrag = b;
}
public double getBetrag(){
return this.betrag;
}*/
public void setText(){
Geldautomat geldautomat = new Geldautomat();
Kontoverwalter kontoverwalterAufgabe = new Kontoverwalter();
int wahl;
int ktoNr;
double betrag;
do // Fußgesteuerte Schleife
{
System.out.println("Willkommen...\n"); // Text ausgabe
System.out.println("1. abheben\n2. einzahlen\n");
System.out.print("->");
wahl = Lese.readInt(); // eingabe vom Benutzer wird erwartet
if(wahl == 1){ // if-Abfrage
System.out.print("Geben Sie das Konto ein :");
ktoNr = Lese.readInt();
System.out.print("Geben Sie den Betrag ein :");
betrag = Lese.readDouble();
if(betrag >= geldautomat.getVorrat()) // überprüfe ob der vorrat reicht
System.out.println("Das Geld kann nicht ausgezahlt werden.\nFragen Sie Ihren Hausarzt");
else
kontoverwalterAufgabe.abheben(ktoNr, betrag);
}
else if(wahl == 2){
System.out.print("Geben Sie das Konto ein");
ktoNr = Lese.readInt();
System.out.print("Geben Sie den Betrag ein");
betrag = Lese.readDouble();
kontoverwalterAufgabe.einzahlen(ktoNr, betrag);
}
else
System.out.println("Falsche eingabe");
}while(wahl != 0); // die Schleife läuft so lange bis "0" eingegeben wird
}
public static void main(String[] args) {
Main mains = new Main();
Geldautomat geldautomat = new Geldautomat();
Konto[] konto = new Konto[4];
Konto k1 = new Konto(1, 1000);
Konto k4 = new Konto(4, 500);
Konto k2 = new Konto(2, 200, 100);
Konto k3 = new Konto(3, 350, 500);
konto[0] = k1;
konto[1] = k2;
konto[2] = k3;
konto[3] = k4;
//Kontoverwalter kontoDummy = new Kontoverwalter(konto);
geldautomat.setText();
mains.setText();
}
}
Java:
package Automat;
public class Kontoverwalter implements Kontointerface{
Geldautomat statusGeldautomat = new Geldautomat();
private Konto[] konto;
public Konto[] getKonto(){
return this.konto;
}
public Kontoverwalter(){
}
public Kontoverwalter(Konto[] k){
this.konto = k;
}
public void abheben(int i, double b) {
int ktoNr = i;
double betrag = b;
double erg = 0;
for(int x = 0; x <= 3; x++){
if(this.konto[x].getKtoNr() == ktoNr){
erg = this.konto[x].getKtoStand() - betrag; // <<<<< so wie ich das verstanden habe ist da der fehler versteckt (Exception)
this.konto[x].setKtoStand(erg);
}
else
System.out.println("Error !\n\n");
}
}
public void einzahlen(int i, double b) {
int ktoNr = i;
double betrag = b;
double erg = 0;
for(int x = 0; x <= 3; x++){
if(this.konto[x].getKtoNr() == ktoNr){
erg = this.konto[x].getKtoStand() + betrag;
this.konto[x].setKtoStand(erg);
}
else
System.out.println("Error !\n\n");
}
}
}
Java:
package Automat;
public class Geldautomat {
private double vorrat = 500; // double variable
public double getVorrat(){
return this.vorrat;
}
public void setText(){
System.out.println("Geldautomat Sparkasse\n");
}
}
Java:
package Automat;
public class Konto {
private int ktoNr;
private double ktoStand;
private double dispo;
public Konto(int kn, double ks){
this.ktoNr = kn;
this.ktoStand = ks;
}
public Konto(int kn, double ks, double d){
this.ktoNr = kn;
this.ktoStand = ks;
this.dispo = d;
}
public double getKtoStand() {
return ktoStand;
}
public void setKtoStand(double k){
this.ktoStand = k;
}
public double getDispo() {
return dispo;
}
public int getKtoNr() {
return ktoNr;
}
}
Java:
package Automat;
public interface Kontointerface {
public void abheben(int i, double b);
public void einzahlen(int i, double b);
}
dann gibs da noch die Lese Klasse was hauptsächlich für die eingabe da ist ...
ist etwas lang ^^ ...
im internet hab ich was zu dem fehler gefunden nur das problem ist es hat mir nicht wirklich geholfen das problem zu lösen.
Hier ein auszug:
#
Exception in thread "main" java.lang.NullPointerException
at Test.main(Test.java:5)
Der Versuch auf eine Objektrefernz zu zugreifen, die den Wert null enthält. Die Referenz muss entweder mit einer anderen Referenz oder mit dem new-Operator initialisiert werden. Der Fehler kann auch im Zusammenhang mit Hüllklassen auftreten, dazu ein Beispiel:
public class Test {
public static void main(String[] args) {
Integer[] array = new Integer[5];
int i = array[0]; // <-- hier tritt die Exception auf
System.out.println(i);
}
}
Arrays werden in Java standardmäßig mit 0 bzw. null initialisiert. Daher kommt beim Compilieren keine Meldung vom Typ "variable *** might not have been initialized". Wird dann versucht mit dem Integer-Objekt zu arbeiten tritt die Exception auf.
es steht da zwar das man eine andere referenz oder mit einem new-operator initialisiert werden muss. aber wie !! bin frustriert ...
Zuletzt bearbeitet: