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

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: