[Java] aus - wird + und ich werd verarscht?

NudelMC

Well-known member
ID: 46722
L
16 Juni 2006
178
5
Soooo das Programm läuft soweit, danke an alle, doch ganz zum schluss bei der letzten Funktion hab ich echte Probleme zu verstehen was passiert.

Ich mache einen aufruf
PHP:
buchung(-30);

der soll das hier aufrufen ( so weit gehts)

PHP:
public void buchung(int buchung){
  int kontostand=0;
      if(buchung >= 0){
        kontostand=(konto+buchung);
        konto = kontostand;
        l_konto.setText("Guthaben: " + kontostand);
      }else{
        kontostand=(konto-buchung);
        konto = kontostand;
        l_konto.setText("Guthaben: " + kontostand);
      }
  }

Allerdings kommt er jetzt in den
PHP:
if(buchung >= 0){
block rein
und nicht in den else ?!

Kann mir das jemand erklären ?

Wenn ich in der funktion das - durch ein + tausche und andersrum läuft alles optimal.

Danke nudel





Neues Problem:
Wie kann ich beim schreiben verhindern das carriage return &Co. mit in die Datei kommen? Schreib ich ja nur die "10000" in meine Datei, aber das mogelt sich immer noch mit dazu, und mit carriage return lässt sich schlecht rechnen :)

PHP:
      File datei = new File("jackpot.txt");
      if (datei.exists()==true){
      System.out.println("ja die is schon da");
      }else{
      System.out.println("Neue Datei erstellt");
      PrintWriter ausgabe = new PrintWriter(datei.toString());
      ausgabe.println("10000");
      ausgabe.close();
      }


Danke Nudel






Mhh ich schon wieder :(

Ich habe einen funktionsaufruf
PHP:
jackpot(1);

Dieser soll dann diese Funktion aufrufen
PHP:
public void jackpot(int test) throws IOException{
  // Prüfen ob Datei vorhanden ist, wenn nicht anlegen
  System.out.println("übergabe");
  System.out.println(test);
      File datei = new File("jackpot.txt");
      if (datei.exists()==true){
      System.out.println("ja die is schon da");
      }else{
      System.out.println("Neue Datei erstellt");
      PrintWriter ausgabe = new PrintWriter(datei.toString());
      ausgabe.println("10000");
      ausgabe.close();
      }
    // Datei auslesen
    FileReader eingabestrom = new FileReader(datei.toString());
    StringBuilder text = new StringBuilder(10);
    int gelesen;
    boolean ende = false;

    // lese Zeichen, bis Dateiende erreicht ist
    while(!ende) {
      gelesen = eingabestrom.read();

      if(gelesen == -1)
        ende = true;
      else
        text.append( (char) gelesen);
    }
     l_jackpot.setText(text.toString());
  }

Aber ich bekomme immer diesen Fehler:

sdu.java:128: unreported exception java.io.IOException; must be caught or declared to be thrown

wobei ich ja oben ganz deutlich "throws IOException" drinne hab o_O

Wäre dankbar für hilfe.

PS:
Ich lese ja ganz unten die .txt ein, kann mir da wer sagen wie ich den eingelesenen text dann nach integer umwandle um damit rechnen zuu können ?
 
Zuletzt bearbeitet:
Naja, Du kriegst ja schon die Zeile, in der der Fehler auftritt, zurückgeliefert (126) - guck doch mal da nach. Ansonsten ist das Exception-Konzept eigentlich ziemlich gut zum Debuggen geeignet. Einfach die Exception irgendwo auffangen, die Meldung und/oder den Stacktrace ausgeben lassen und schon weisst Du, wo was falsch läuft.
 
also, da du in Jackpot ja die Exception weiterwirfst (an die höhere Ebene) kann in der jackpot-Funktion der fehler ja nicht liegen.
Ich würde mal sagen, die IOException wird in der aufrufenden Methode, die jackpot aufruft) nicht behandelt und deshalb meldet dir die JavaVM den Fehler, du musst schon die Exception immer weiter leiten bis sie irgendwann behandelt wird.
 
Probiers mal mit try catch.... ansonsten kanns sein das du evtl die FileNotFoundException noch brauchst, mit der schmeisst FILE umsich wenn du es nicht gut behandelst (ist aber von der IO abgeleitet, deswegen kanns evtl auch ohne gehen).....

Strings kannst du mit
Code:
int Integer.parseInt(String arg0)
Strings in ints umwandeln....

mfg
Samy
 
also ich bin mitlerweile auch drauf gekommen das es tatsächlich am aufruf liegt,

NEues Prob siehe eins unten dran, danke an alle!
 
Zuletzt bearbeitet:
Neues Problem:
Wie kann ich beim schreiben verhindern das carriage return &Co. mit in die Datei kommen? Schreib ich ja nur die "10000" in meine Datei, aber das mogelt sich immer noch mit dazu, und mit carriage return lässt sich schlecht rechnen :)

PHP:
      File datei = new File("jackpot.txt");
      if (datei.exists()==true){
      System.out.println("ja die is schon da");
      }else{
      System.out.println("Neue Datei erstellt");
      PrintWriter ausgabe = new PrintWriter(datei.toString());
      ausgabe.println("10000");
      ausgabe.close();
      }


Danke Nudel
 
Du musst einfach nur ausgabe.print() benutzen. println() (Print Line) schreibt immer den Umbruch.
 
Soooo das Programm läuft soweit, danke an alle, doch ganz zum schluss bei der letzten Funktion hab ich echte Probleme zu verstehen was passiert.

Ich mache einen aufruf
PHP:
buchung(-30);

der soll das hier aufrufen ( so weit gehts)

PHP:
public void buchung(int buchung){
  int kontostand=0;
      if(buchung >= 0){
        kontostand=(konto+buchung);
        konto = kontostand;
        l_konto.setText("Guthaben: " + kontostand);
      }else{
        kontostand=(konto-buchung);
        konto = kontostand;
        l_konto.setText("Guthaben: " + kontostand);
      }
  }

Allerdings kommt er jetzt in den
PHP:
if(buchung >= 0){
block rein
und nicht in den else ?!

Kann mir das jemand erklären ?

Wenn ich in der funktion das - durch ein + tausche und andersrum läuft alles optimal.

Danke nudel
 
oO.....
Code:
kontostand=(konto-buchung);
also kontostand = konto - -30 .....
egal welchen zweig er wählt es wird immer dazuaddiert weil -- gibt bekanntlich +

mfg
Samy
 
Zuletzt bearbeitet:
5 klasse, ganze zahlen ...

jo jetzt is gut, ich kann java nimmer sehen, projekt beendet nach 4 tagen hardcore dauer coden.

Danke vorallem an dich Samy für deine gedult und allen anderen natürlich auch ein dickens Danke!