Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich brauch da mal eure Hilfe und hoffe ihr könnt mir weiter helfen.
Diesen Quelltext(Bild) haben wir von der Schule bekommen und müssen nun die Fehler beseitigen.
Ich habe absolut keine Ahnung wie ich bei so einer Meldung auf Fehlersuche gehe.
was ist Code überhaupt, hast du da keine Vorstellung?
wenn du mit den Schraubendreher ein Autorad anschrauben willst und das nur durchdreht weil keine Schraube im 'Schraubloch' sitzt,
fragst du dann auch Leute in einem Forum oder überlegst selber, warum sollte da eigentlich eine Schraube sitzen oder nicht, nimmst im Zweifel eine neue Schraube?
jede NullPointerException sagt dir dass etwas nicht da ist, ignoriere es und setze ein neues Objekt hin oder schaue im Prozess nach wo denn eine gesetzt hätte sein sollen, wo der Fehler stattfindet (im realen Beispiel z.B. der Kollege der 2 Min. vorher am Rad hantierte)
Du hast doch in KundenkontoAnw
irgendwo die Zeile
kunde.gutschrift( eingabe.nextDouble());
jetzt ist die Frage, wo denn dieser Kunde erzeugt wird.
Zeig doch mal die main methode von KundenkontoAnw.
Von dort erfolgt offensichtlich der Aufruf der Methode gutschrift()
java.util.Scanner wurde importiert. In der warning steht folgendes: Resource leak: 'eingabe' is never closed.
Hier noch der Quelltext von einer dritten Klasse in dem sich main() befindet:
(main() beginnt ab Zeile 11, ich glaub kunde wird in Zeile 6 erzeugt, die Funktion gutschrift() worum es bei der Sache geht fängt in Zeile 99 an)
Java:
public class KundenkontoAnw
{
/**
* der Kunde
*/
private static Kunde kunde;
/**
* Hauptprogramm
*/
public static void main( String[ ] args )
{
boolean ende = false;
int wahl;
do
{
wahl = menue( );
switch ( wahl )
{
case 1:
neuerKunde( );
break;
case 2:
gutschrift( );
break;
case 3:
abbuchung( );
break;
case 4:
kontenstandAbfragen( );
break;
default:
beenden( );
ende = true;
}
}
while ( ! ende );
}
/**
* <P>Menü:
* <BR>1 - Angaben eines Kunden aufnehmen und Konto eröffnen
* <BR>2 - Überweisung eines Kunden gutschreiben
* <BR>3 - Betrag vom Konto abbuchen
* <BR>4 - Kontenstand abfragen
* <BR>0 - Ende
*/
public static int menue( )
{
System.out.println( );
System.out.println( "Verwaltung des Kontos eines Kunden" );
System.out.println( "----------------------------------" );
System.out.println( );
System.out.println( "1 - Angaben eines Kunden aufnehmen und Konto eröffnen" );
System.out.println( "2 - Überweisung eines Kunden gutschreiben" );
System.out.println( "3 - Betrag vom Konto abbuchen" );
System.out.println( "4 - Kontenstand abfragen" );
System.out.println( "0 - Ende" );
System.out.println( );
System.out.print( "Wahl: " );
Scanner eingabe = new Scanner( System.in );
return eingabe.nextInt( );
}
/**
* Angaben eines Kunden aufnehmen und Konto eröffnen
*/
public static void neuerKunde( )
{
String s;
System.out.println( );
System.out.println( "1 - Angaben eines Kunden aufnehmen und Konto eröffnen" );
System.out.println( );
kunde = new Kunde( );
Scanner eingabe = new Scanner( System.in );
System.out.print( "Name: " );
kunde.setName( eingabe.nextLine( ) );
System.out.print( "Ort : " );
kunde.setOrt( eingabe.nextLine( ) );
System.out.print( "Kreditlimit [ " + kunde.getKonto( ).getKreditlimit( ) + " ] : " );
s = eingabe.nextLine( );
if ( ! s.equals( "" ) )
kunde.getKonto( ).setKreditlimit( new Double( s ) );
System.out.print( "Datum [ " + kunde.getKonto( ).getEroeffnungsdatum( ) + " ] : " );
s = eingabe.nextLine( );
if ( ! s.equals( "" ) )
kunde.getKonto( ).setEroeffnungsdatum( s );
}
/**
* Überweisung eines Kunden gutschreiben
*/
public static void gutschrift( )
{
System.out.println( );
System.out.println( "2 - Überweisung eines Kunden gutschreiben" );
System.out.println( );
Scanner eingabe = new Scanner( System.in );
System.out.print( "Betrag: " );
kunde.gutschrift( eingabe.nextDouble() );
}
/**
* Betrag vom Konto des Kunden abbuchen
*/
public static void abbuchung( )
{
System.out.println( );
System.out.println( "3 - Betrag vom Konto abbuchen" );
System.out.println( );
Scanner eingabe = new Scanner( System.in );
System.out.print( "Betrag: " );
kunde.abbuchen( eingabe.nextDouble( ) );
}
/**
* Kontenstand abfragen
*/
public static void kontenstandAbfragen( )
{
System.out.println( );
System.out.println( "4 - Kontenstand abfragen" );
System.out.printf( "\nKontenstand: %12.2f", kunde.kontenstandAbfragen( ) );
System.out.println( );
}
/**
* Ausführung des Programms beenden
*/
public static void beenden( )
{
System.out.println( );
System.out.println( "0 - Ende" );
System.out.println( );
}
}
in Zeile 6 wird nur eine Variable deklariert, wie ein Parkplatz ohne Auto drauf,
die Methode neuerKunde( ) sorgt für einen Kunden,
ob du gutschrift( ); ohne bzw. vor neuerKunde( ); ausführst, nach Benutzereingabe, ist wie alles nicht zu erkennen,
nicht von dir gesagt, alles muss man nachfragen
ein Code der von Benutzereingaben abhängt, hat offensichtlich ohne genaue Dokumentation der Eingaben nicht komplette Aussagekraft
ist es so schwer mitzudenken? nun, dann hoffentlich in diesem Fall gut lernen,
die Variable kunde ist leer, deswegen Fehler,
das ist wirklich schon alles, nichts was einem nicht täglich begegnen wird, 3 Min. Bearbeitung dauert
Danke für eure antworten und nein es ist nicht so schwer mit zu denken ich weiß nur nicht wie ich kunde einen Wert zuweise, mit kunde = 0.0; gehts ja nicht
> ich weiß nur nicht wie ich kunde einen Wert zuweise
mit
> kunde = new Kunde( );
geht das, wie es in der Methode neuerKunde( ) das zentrale Thema ist!
wie es in deinem Hauptmenü einer von 4-5 Möglichkeiten überhaupt im Programm
ohne irgendwie hämisch zu sein läßt diese Nachfrage auch wieder schwer am Verständnis zweifeln,
was sollte
> kunde = 0.0;
denn bringen?
du brauchst doch ein Objekt der Klasse Kunde, du willst doch dessen interne Dinge, name, konto, double kontostand, Methoden usw. nutzen..
in diesem Fall musst du doch nichtmal so sehr in Java-Dingen denken, allein schon das Hauptmenü
Java:
System.out.println( "1 - Angaben eines Kunden aufnehmen und Konto eröffnen" );
System.out.println( "2 - Überweisung eines Kunden gutschreiben" );
System.out.println( "3 - Betrag vom Konto abbuchen" );
System.out.println( "4 - Kontenstand abfragen" );
legt doch nahe, dass man erstmal mit Menüpunkt 1 einen Kunden anlegen,
wohin sollte etwas überwiesen werden sonst?
edit:
> kann man das Problem so lösen?
die fragliche Fehlermeldung womöglich, wobei richtige Bedienung (erst Kundeneingabe) auch ginge,
Verständnis für Vorgänge ist unerläßlich,
eine Fernbedienung macht auch nix bevor man nicht den Fernseher einschaltet