Codezeile wird einfach nicht ausgeführt

vinno

Mitglied
Hey,
folgender Code wirft keine Fehlermeldung aber weder if noch else wird bei mir ausgefüht (selbst wenn ich genau diesen Code in die main Methode schreibe. Manchmal wird auch das, was auf diese Zeilen folgt nicht ausgeführt):
Java:
String test1 = "Eins";
        String test2 = "Zwei";
        if (!test1.equalsIgnoreCase(test2)) {
          System.out.println("Inhalte test1 und test2 sind ungleich!");
        }
        else {
          System.out.println("Inhalte test1 und test2 sind gleich!");
        }
Was muss ich machen damit dieser Funktioniert? (nur ein Beispielcode deswegen muss das ! da bleiben)
 

InfectedBytes

Top Contributor
ansonsten: bist du sicher das eclipse genau diese Datei ausführt?
Vielleicht hast du ja eine zweite, leere main datei im projekt liegen, welche gestartet wird.
 

vinno

Mitglied
Java:
import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.ActionEvent;

@SuppressWarnings("serial")
public class mainfield extends JFrame implements ActionListener
{
    //Definition von Variabeln
    int line, angemeldet;

    String accountname;

    JFrame frameC;
    JPanel chat;
    JLabel labelM, lmelden, name, pw, pw2;
    JTextField tfmessage, tfname;
    JPasswordField tfpassword, tfpassword1;
    JButton buttonS, buttonA, buttonR, login, erstelleAccount, back, btnNewButton;
    TextArea output;

    public mainfield() throws IOException{
        //Deklarieren von Variabeln
        angemeldet = 0;
   
        //nun wird ausgelesen, welche Nummer die letzte Message hatte um alle folgenden zu senden
        try{
            FileReader fr = new FileReader("Chatübertragung.txt"); //Hier: Verweis zu Tausch!
            BufferedReader br = new BufferedReader(fr);
            line = Integer.valueOf(br.readLine());
            br.close();
        }catch(FileNotFoundException exp) {}
   
        //nun wird das Fenster entworfen
        frameC = new JFrame();
        frameC.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frameC.setTitle("Chat");
        frameC.setSize(550, 635);
            chat = new JPanel();
            chat.setLayout(null);
       
            //chatfeld
                labelM = new JLabel("Nachricht:");
                labelM.setFont(new Font("Tahoma", Font.PLAIN, 12));
                labelM.setBounds(18, 367, 61, 14);
            chat.add(labelM);
       
                tfmessage = new JTextField("", 40);
                tfmessage.setBounds(89, 364, 344, 20);
                tfmessage.setForeground(Color.BLACK);
                tfmessage.setBackground(Color.WHITE);
            chat.add(tfmessage);
       
                buttonS = new JButton("senden");
                buttonS.setFont(new Font("Tahoma", Font.PLAIN, 12));
                buttonS.setBounds(443, 363, 81, 23);
                buttonS.addActionListener(this);
            chat.add(buttonS);
       
            //anmeldefeld
                buttonA = new JButton("Anmelden");
                buttonA.setFont(new Font("Tahoma", Font.PLAIN, 12));
                buttonA.setBounds(119, 395, 122, 23);
                buttonA.addActionListener(this);
            chat.add(buttonA);
           
                buttonR = new JButton("Registrieren");
                buttonR.setFont(new Font("Tahoma", Font.PLAIN, 12));
                buttonR.setBounds(275, 395, 122, 23);
                buttonR.addActionListener(this);
            chat.add(buttonR);
           
            //meldefeld
                lmelden = new JLabel("");
                lmelden.setFont(new Font("Tahoma", Font.PLAIN, 12));
                lmelden.setSize(506, 14);
                lmelden.setLocation(18, 429);
            chat.add(lmelden);
   
            //outputfeld
                output = new TextArea();
                output.setBackground(Color.WHITE);
                output.setEditable(false);
                output.setBounds(18, 10, 506, 335);
            chat.add(output);
           
            //Einleitung des Users
                output.setText("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
                output.append("\nSchön, dass du meinen Chat nutzt!");
                output.append("\n(By: Vincent Hilla V0.9)");
                output.append("\nDies ist eine Alpha. Es können also Bugs auftreten.");
                output.append("\nPasswörter sind noch nicht Imnplementiert. Bitte keine Namen stehlen!");
                output.append("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
           
            //Nun werden sachen definiert, die später gebraucht werden könnten aber vorerst unsichtbar sind
           
                //label name
                    name = new JLabel("Name:");
                    name.setEnabled(false);
                    name.setFont(new Font("Tahoma", Font.PLAIN, 12));
                    name.setSize(45, 14);
                    name.setLocation(18, 700);
                    chat.add(name);
               
                //textfeld tfname
                    tfname = new JTextField("", 40);
                    tfname.setFont(new Font("Tahoma", Font.PLAIN, 12));
                    tfname.setEnabled(false);
                    tfname.setSize(344, 20);
                    tfname.setLocation(89, 700);
                    tfname.setForeground(Color.BLACK);
                    tfname.setBackground(Color.WHITE);
                    chat.add(tfname);
               
                //label pw
                    pw = new JLabel("Password:");
                    pw.setEnabled(false);
                    pw.setFont(new Font("Tahoma", Font.PLAIN, 12));
                    pw.setSize(61, 14);
                    pw.setLocation(18, 700);
                    chat.add(pw);
               
                //passwordfeld tfpassword
                    tfpassword = new JPasswordField("", 40);
                    tfpassword.setFont(new Font("Tahoma", Font.PLAIN, 12));
                    tfpassword.setEnabled(false);
                    tfpassword.setSize(344, 20);
                    tfpassword.setLocation(89, 800);
                    tfpassword.setForeground(Color.BLACK);
                    tfpassword.setBackground(Color.WHITE);
                    chat.add(tfpassword);
               
                //button login
                    login = new JButton("Login!");
                    login.setEnabled(false);
                    login.setSize(78, 23);
                    login.setLocation(219, 800);
                    login.setFont(new Font("Tahoma", Font.PLAIN, 12));
                    login.addActionListener(this);
                    chat.add(login);
               
                //boutton back
                    back = new JButton("Back");
                    back.setFont(new Font("Tahoma", Font.PLAIN, 12));
                    back.setSize(81, 23);
                    back.setLocation(443, 700);
                    back.setEnabled(false);
                    back.addActionListener(this);
                    chat.add(back);
               
                //label pw2
                    pw2 = new JLabel("wiederholen:");
                    pw2.setFont(new Font("Tahoma", Font.PLAIN, 12));
                    pw2.setEnabled(false);
                    pw2.setSize(72, 14);
                    pw2.setLocation(18, 800);
                    chat.add(pw2);
               
                //passwordfeld tfpassword1
                    tfpassword1 = new JPasswordField("", 40);
                    tfpassword1.setFont(new Font("Tahoma", Font.PLAIN, 12));
                    tfpassword1.setSize(344, 20);
                    tfpassword1.setLocation(89, 800);
                    tfpassword1.setForeground(Color.BLACK);
                    tfpassword1.setBackground(Color.WHITE);
                    chat.add(tfpassword1);
               
                //button erstelleAccount
                    erstelleAccount = new JButton("Registrieren");
                    erstelleAccount.setFont(new Font("Tahoma", Font.PLAIN, 12));
                    erstelleAccount.setEnabled(false);
                    erstelleAccount.setSize(98, 23);
                    erstelleAccount.setLocation(199, 800);
                    erstelleAccount.addActionListener(this);
                    chat.add(erstelleAccount);
               
           
        //Fenster öffnen
        frameC.getContentPane().add(chat);
        frameC.setVisible(true);
   
        while(true) {
            act();
        }
    }

    public void act() {
        //durchgehender check, ob neue Nachrichten verfügbar und diese dann ausgeben
        try{
            try{
                FileReader fr = new FileReader("Chatübertragung.txt"); //Hier: Verweis zu Tauschordner!
                BufferedReader br = new BufferedReader(fr);
                int newline = Integer.valueOf(br.readLine());
                String message = br.readLine();
                br.close();
                if(newline > line) {
                    output.append("\n" + message);
                    line = newline;
                }
            }catch(IOException ioe) {}
        }catch(NumberFormatException exp) {}
    }

    public void outputten() throws IOException, FileNotFoundException{
        //wenn senden gedrückt
        lmelden.setText("");
        if(angemeldet == 1) {
            if(tfmessage.getText() != null) {
                //Nachricht senden
                BufferedWriter bw = new BufferedWriter(new FileWriter("Chatübertragung.txt")); //Hier: Verweis zu Tausch!
                int newline = line + 1;
                bw.write("" + newline + "");
                bw.newLine();
                bw.write("[" + accountname + "]" + tfmessage.getText());
                bw.close();
           
                //Erstellen einer logdatei
                BufferedWriter bwlog = new BufferedWriter(new FileWriter("Chatlog.txt", /*append*/ true)); //Hier: Verweis zu Tausch!
                bwlog.newLine();
                bwlog.write(newline + ": " + "[" + accountname + "]" + tfmessage.getText());
                bwlog.close();
           
                //Chatfeld leeren
                tfmessage.setText("");
            }
        }else {
            lmelden.setText("Du bist nicht angemeldet!");
            chat.add(lmelden);
       
            frameC.getContentPane().add(chat);
            frameC.setVisible(true);
        }
    }

    public void actionPerformed(ActionEvent ae) {
        if(ae.getSource() == this.buttonS) {
            try{
                outputten();
            }catch(IOException ioe) {}
        }
   
        if(ae.getSource() == this.buttonA) {
            //alle Anmelde/Registrier/Fehlermedungsfelder enfernen
            buttonA.setEnabled(false);
            buttonR.setEnabled(false);
            lmelden.setText("");
       
            //Erstellen des Anmeldebereiches
       
                //Erstellen des Namensfeldes
                name.setEnabled(true);
                name.setLocation(18, 452);
           
                tfname.setEnabled(true);
                tfname.setLocation(89, 449);
           
                //Erstellen des Passwordfeldes
                pw.setEnabled(true);
                pw.setLocation(18, 486);
           
                tfpassword.setEnabled(true);
                tfpassword.setLocation(89, 483);
           
                //Ok button
                login.setEnabled(true);
                login.setLocation(219, 515);
           
                //back button
                back.setEnabled(true);
                back.setLocation(443, 450);
           
            frameC.getContentPane().add(chat);
            frameC.setVisible(true);
        }
   
        if(ae.getSource() == this.buttonR) {
            //alle Anmelde/Registrier/Fehlermedungsfelder enfernen
            buttonA.setEnabled(false);
            buttonR.setEnabled(false);
            lmelden.setText("");
       
            //Erstellen des Registrierbereiches
       
                //Erstellen des Namensfeldes
                name.setEnabled(true);
                name.setLocation(18, 452);
           
                tfname.setEnabled(true);
                tfname.setLocation(89, 449);
           
                //Erstellen des Passwordfeldes
                pw.setEnabled(true);
                pw.setLocation(18, 486);
           
                tfpassword.setEnabled(true);
                tfpassword.setLocation(89, 483);
           
                //Erstellen des Passwordwiederholen Feld
                pw2.setEnabled(true);
                pw2.setLocation(18, 520);
           
                tfpassword1.setEnabled(true);
                tfpassword1.setLocation(89, 517);
           
                //Ok button
                erstelleAccount.setEnabled(true);
                erstelleAccount.setLocation(219, 548);
           
                //back button
                back.setEnabled(true);
                back.setLocation(443, 450);
           
            frameC.getContentPane().add(chat);
            frameC.setVisible(true);
        }
   
        if(ae.getSource() == this.back) {
            //unnötiges entfernen
            try{
                name.setEnabled(false);
                tfname.setEnabled(false);
                pw.setEnabled(false);
                tfpassword.setEnabled(false);
                login.setEnabled(false);
                pw2.setEnabled(false);
                tfpassword1.setEnabled(false);
                erstelleAccount.setEnabled(false);
                lmelden.setText("");
                name.setLocation(18, 700);
                tfname.setLocation(18, 700);
                pw.setLocation(18, 700);
                tfpassword.setLocation(18, 700);
                login.setLocation(18, 700);
                pw2.setLocation(18, 700);
                tfpassword1.setLocation(18, 700);
                erstelleAccount.setLocation(18, 700);
            } catch(NullPointerException exp) {}
       
            //anmeldefeld
                buttonA.setEnabled(true);
           
                buttonR.setEnabled(true);
           
                back.setEnabled(false);
                back.setLocation(18, 700);
       
            frameC.getContentPane().add(chat);
            frameC.setVisible(true);
        }
   
        if(ae.getSource() == this.login) {
            lmelden.setText("");
            if(String.valueOf(tfpassword.getPassword()).equals("") ||  tfname.getText().equals("")) {
                lmelden.setText("Du musst bei Name und Passwort etwas eingeben!");
            }else{
                try{
                    try{
                        BufferedReader brA = new BufferedReader(new FileReader("Password.txt"));
                        String txtname = "nochnichts";
                        String txtpasswort;
                        while(!txtname.equals("")) {
                            txtname = brA.readLine();
                            txtpasswort = brA.readLine();
                            if(txtname.equals(tfname.getText()) && txtpasswort.equals(String.valueOf(tfpassword.getPassword()))) {
                                accountname = String.valueOf(tfname.getText());
                                angemeldet = 1;
                                name.setEnabled(false);
                                tfname.setEnabled(false);
                                pw.setEnabled(false);
                                tfpassword.setEnabled(false);
                                login.setEnabled(false);
                                pw2.setEnabled(false);
                                tfpassword1.setEnabled(false);
                                erstelleAccount.setEnabled(false);
                                back.setEnabled(false);
                                name.setLocation(18, 700);
                                tfname.setLocation(18, 700);
                                pw.setLocation(18, 700);
                                tfpassword.setLocation(18, 700);
                                login.setLocation(18, 700);
                                pw2.setLocation(18, 700);
                                tfpassword1.setLocation(18, 700);
                                erstelleAccount.setLocation(18, 700);
                                back.setLocation(18, 700);
                                buttonA.setLocation(18, 700);
                                buttonR.setLocation(18, 700);
                            }
                        }
                        if(angemeldet == 0) { //FEHLER Wird nie ausgeführt (auch kein else)
                            lmelden.setText("Die Anmeldedaten funktionieren nicht!");
                        }
                        brA.close();
                    }catch(IOException ioe) {}
                }catch(NullPointerException npx) {}
            }
        }
   
        if(ae.getSource() == this.erstelleAccount) {
            lmelden.setText("");
            try{
                try{
                    if(String.valueOf(tfpassword.getPassword()).equals("") || tfname.getText().equals("")) {
                           lmelden.setText("Du musst bei Name und Passwort etwas eingeben!");
                       }else{
                           if(String.valueOf(tfpassword.getPassword()).equals(String.valueOf(tfpassword1.getPassword()))) {
                            BufferedReader brR = new BufferedReader(new FileReader("Password.txt"));
                            String txtname = "nochnichts";
                            while(!txtname.equals("")) {
                                txtname = brR.readLine();
                                brR.readLine();
                                if(txtname.equals(tfname.getText())) {
                                    lmelden.setText("Name bereits vergeben!");
                                }
                            }
                            if(!lmelden.getText().equals("Name bereits vergeben!")) { //FEHLER wird nicht ausgeführt (auch else nicht)
                                BufferedWriter bwR = new BufferedWriter(new FileWriter("Password.txt", /*append*/ true));
                                bwR.newLine();
                                bwR.write(tfname.getText());
                                bwR.newLine();
                                bwR.write(String.valueOf(tfpassword.getPassword()));
                                bwR.close();
                                accountname = tfname.getText();
                                angemeldet = 1;
                                name.setEnabled(false);
                                tfname.setEnabled(false);
                                pw.setEnabled(false);
                                tfpassword.setEnabled(false);
                                login.setEnabled(false);
                                pw2.setEnabled(false);
                                tfpassword1.setEnabled(false);
                                erstelleAccount.setEnabled(false);
                                back.setEnabled(false);
                                name.setLocation(18, 700);
                                tfname.setLocation(18, 700);
                                pw.setLocation(18, 700);
                                tfpassword.setLocation(18, 700);
                                login.setLocation(18, 700);
                                pw2.setLocation(18, 700);
                                tfpassword1.setLocation(18, 700);
                                erstelleAccount.setLocation(18, 700);
                                back.setLocation(18, 700);
                                buttonA.setLocation(18, 700);
                                buttonR.setLocation(18, 700);
                            }
                            brR.close();
                           }else{
                               lmelden.setText("Die Passwörter stimmen nicht überein!");
                           }
                       }
                }catch(NullPointerException npe) {}
            }catch(IOException ioe) {}
       
        }
    }

    public static void main(String[] args) {
        try{
            mainfield chatter = new mainfield();
            chatter.setVisible(true);
        } catch (Exception e) {
            e.printStackTrace();
        }

        //Folgender teil funktioniert nicht
        //schreibe ich hier System.out.println("test"); würde das ausgeführt werden
        String test1 ="Eins";
        String test2 ="Zwei";
        if(!test1.equalsIgnoreCase(test2)){
        System.out.println("Inhalte test1 und test2 sind ungleich!");
        }
        else{
        System.out.println("Inhalte test1 und test2 sind gleich!");
       }
       }
    }
}


Das ist mein Code
Eigentlich müsste der teil in der main Methode am ende ja angezeigt werden.
 

InfectedBytes

Top Contributor
Java:
while(true){
            act();
       }
du machst hier eine endlosschleife.
Logischerweise wird also alles was danach kommt nicht mehr ausgeführt.
 

vinno

Mitglied
Java:
while(true){
            act();
       }
du machst hier eine Endlosschleife.
Logischerweise wird also alles was danach kommt nicht mehr ausgeführt.
Die Main Methode wird doch davor ausgeführt
Außerdem soll ja die act Methode ständig wiederholt werden.
Und danach folgen ja nur noch Methoden, die die act Methode aufrufen und der Actionlistener.
 

InfectedBytes

Top Contributor
die main methode ruft new mainfield() auf, und dort machst du die endlosschleife.
Und solange diese schleife nicht verlassen wird, wird logischerweise auch das danach nicht ausgeführt.
Außerdem wird so deine GUI einfrieren. Die schleife sollte in einem separaten Thread laufen.
 

InfectedBytes

Top Contributor
einen zweiten thread starten, in dem die schleife läuft.
Aber ich würde keine Endlosschleife nehmen, sondern eher sowas:
Java:
while(!beenden) {
  act();
}
 

Joose

Top Contributor
Indem du die Methode in einen eigenen Thread auslagerst (Runnable implementieren mit deinem Methodencode, dort kann man auch eine entsprechende Schleife erstellen) und diesen Thread starten.

Anmerkung: while(true) als Schleife ist immer eine schlechte Wahl, lieber so wie InfectedBytes es geschrieben hat.
Klassennamen sollten in UpperCamelCase geschrieben werden.

PS: Was soll deine Methode act() denn machen? Immer die 1.Zeile der Datei auslesen und auf die Konsole schreiben?
 

vinno

Mitglied
Das Programm erstellt ja letzten Endes ein Fenster, in dem oben ein Textfeld ist und unterhalb Anmeldemöglichkeiten und ein Feld, wo eine Nachricht eingegeben werden kann. Die act() Methode fragt regelmäßig ab, ob jemand eine neue Nachricht gesendet hat und gibt diese dann in dem Textfeld aus. Gedacht war dies einfach als Übung für mich, da ich demnächst in Informatik eine Klausur schreibe. Außerdem sollte es hiermit möglich sein über einen öffendlichen Ordner auf einem Serverlaufwerk meiner Schule Nachrichten innerhalb des Schulnetzwerkes zu senden.
Ich schau mal ob dann alles klappt.
 

vinno

Mitglied
Also leider funktioniert immer noch nicht alles:
Java:
if(ae.getSource() == this.login) {
            lmelden.setText("");
            if(String.valueOf(tfpassword.getPassword()).equals("") ||  tfname.getText().equals("")) {
                lmelden.setText("Du musst bei Name und Passwort etwas eingeben!");
            }else{
                try{
                    try{
                        BufferedReader brA = new BufferedReader(new FileReader("Password.txt"));
                        String txtname = "nochnichts";
                        String txtpasswort;
                        System.out.println("a1");
                        int i = 0;
                        while(!txtname.equals("")) {
                            i++;
                            System.out.println(i);
                            txtname = brA.readLine();
                            txtpasswort = brA.readLine();
                            if(txtname.equals(tfname.getText()) &&                     txtpasswort.equals(String.valueOf(tfpassword.getPassword()))) {
                                accountname = String.valueOf(tfname.getText());
                                angemeldet = 1;
                                name.setEnabled(false);
                                tfname.setEnabled(false);
                                pw.setEnabled(false);
                                tfpassword.setEnabled(false);
                                login.setEnabled(false);
                                pw2.setEnabled(false);
                                tfpassword1.setEnabled(false);
                                erstelleAccount.setEnabled(false);
                                back.setEnabled(false);
                                name.setLocation(18, 700);
                                tfname.setLocation(18, 700);
                                pw.setLocation(18, 700);
                                tfpassword.setLocation(18, 700);
                                login.setLocation(18, 700);
                                pw2.setLocation(18, 700);
                                tfpassword1.setLocation(18, 700);
                                erstelleAccount.setLocation(18, 700);
                                back.setLocation(18, 700);
                                buttonA.setLocation(18, 700);
                                buttonR.setLocation(18, 700);
                            }
                        }System.out.println("a2");
                        if(angemeldet == 0) {
                            lmelden.setText("Die Anmeldedaten funktionieren nicht!");
                        }
                        brA.close();
                    }catch(IOException ioe) {}
                    //funzt nicht
                    System.out.println("a3");
                }catch(NullPointerException npx) {} System.out.println("a4");
            }
        }

hierin liegt das erste Problem wenn ich das ausführe wird folgendes ausgegeben:
a1
1
2
3
Folglich wird alles nach der while-Schleife nicht mehr ausgeführt. Die while-Schleife läuft 3 mal durch also läuft nicht unendlich weiter. Zweites Problem:
Java:
if(ae.getSource() == this.erstelleAccount) {
            lmelden.setText("");
            try{
                try{
                    if(String.valueOf(tfpassword.getPassword()).equals("") || tfname.getText().equals("")) {
                           lmelden.setText("Du musst bei Name und Passwort etwas eingeben!");
                       }else{
                           if(String.valueOf(tfpassword.getPassword()).equals(String.valueOf(tfpassword1.getPassword()))) { //FEHLER wird nicht ausgeführt (auch else nicht)
                               System.out.println("a1");
                            BufferedReader brR = new BufferedReader(new FileReader("Password.txt"));
                            String txtname = "nochnichts";
                            int i = 0;
                            while(!txtname.equals("")) {
                                i++;
                                System.out.println(i);
                                txtname = brR.readLine();
                                brR.readLine();
                                if(txtname.equals(tfname.getText())) {
                                    lmelden.setText("Name bereits vergeben!");
                                }
                            }System.out.println("a2");
                            if(!lmelden.getText().equals("Name bereits vergeben!")) {
                                BufferedWriter bwR = new BufferedWriter(new FileWriter("Password.txt", /*append*/ true));
                                bwR.newLine();
                                bwR.write(tfname.getText());
                                bwR.newLine();
                                bwR.write(String.valueOf(tfpassword.getPassword()));
                                bwR.close();
                                accountname = tfname.getText();
                                angemeldet = 1;
                                name.setEnabled(false);
                                tfname.setEnabled(false);
                                pw.setEnabled(false);
                                tfpassword.setEnabled(false);
                                login.setEnabled(false);
                                pw2.setEnabled(false);
                                tfpassword1.setEnabled(false);
                                erstelleAccount.setEnabled(false);
                                back.setEnabled(false);
                                name.setLocation(18, 700);
                                tfname.setLocation(18, 700);
                                pw.setLocation(18, 700);
                                tfpassword.setLocation(18, 700);
                                login.setLocation(18, 700);
                                pw2.setLocation(18, 700);
                                tfpassword1.setLocation(18, 700);
                                erstelleAccount.setLocation(18, 700);
                                back.setLocation(18, 700);
                                buttonA.setLocation(18, 700);
                                buttonR.setLocation(18, 700);
                            }System.out.println("a3");
                            brR.close();
                           }else{
                               lmelden.setText("Die Passwörter stimmen nicht überein!");
                           }
                       }System.out.println("a4");
                }catch(NullPointerException npe) {}System.out.println("a5");
            }catch(IOException ioe) {}
        }
Ausgegeben wird:
a1
1
2
3
a5
Auch hier wird nach der while-Schleife gestoppt.
 

JStein52

Top Contributor
Du hast eine ungewöhnliche Art deine catch-Blöcke zu implementieren ?! Und auch diese geschachtelte Exception-Behandlung ist komisch.
 

vinno

Mitglied
Ja ich gehe noch zur Schule und dort sind wir immer noch dabei, wie man eine if schleife richtig aufstellt. Also habe ich mir online weitere Sachen durchgelesen wobei das dann nicht immer alles richtig ist bzw. ich verschiedene Sachen miteinander verbinde oder falsch verstehe. In Zukunft wird das wohl besser, denn wir werden in der Schule ca. 3/4 des Jahres Java behandeln.
 

JStein52

Top Contributor
Ok, kein Problem. Du wolltest vermutlich diese beiden Exceptions Abfangen ? Schreib es mal so:

Java:
                // du brauchst nur ein try
                try{
                    if([URL='http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string']String[/URL].valueOf(tfpassword.getPassword()).equals("") || tfname.getText().equals("")) {



                               buttonA.setLocation(18, 700);
                                buttonR.setLocation(18, 700);
                            }System.out.println("a3");
                            brR.close();
                           }else{
                               lmelden.setText("Die Passwörter stimmen nicht überein!");
                           }
                       }System.out.println("a4");
                }
                  catch(NullPointerException npe)       {System.out.println("a5");}
                  catch(IOException ioe) { und hier auch ein println}
        }
 

vinno

Mitglied
ok danke! Hab es sofort geändert.
Dennoch bleibt das Problem, dass nach der while-Schleife manche Zeilen nicht so ausgeführt werden, wie ich es gerne hätte.
 

JStein52

Top Contributor
Ja das dachte ich mir, aber kann es sein dass in einer der Methoden die du da aufrufst eine Exception geschmissen wird die du nicht siehst ? Oder dass er da drin schleift oder so was ? Kannst du debuggen ? Dann geh doch mal die Schleife schrittweise durch.
 

Joose

Top Contributor
wir immer noch dabei, wie man eine if schleife richtig aufstellt.

Achtung: Es gibt keine "if-Schleifen" sondern nur "if-Abfragen/Bedingungen"!

Dennoch bleibt das Problem, dass nach der while-Schleife manche Zeilen nicht so ausgeführt werden, wie ich es gerne hätte.

Du musst bedenken: Der Code in deiner while-Schleife wird solange ausgeführt, solange die Bedingung im Kopf der Schleife zutrifft (true ergibt).
Erst wenn die Bedingung nicht mehr zutrifft wird die while-Schleife verlassen und der Code danach ausgeführt.


Wenn du in deiner Schleife etwas einlesen willst und das Eingelesene überprüfen willst und anhand dieser Überprüfung etwas machen willst/musst dann muss der Code innerhalb der Schleife aufgerufen werden. Also entweder steht der Code in der Schleife oder in einer Methode und diese Methode wird innerhalb der Schleife aufgerufen.

Und bevor du ein komplettes Programm schreiben willst, versuche die Schritt für Schritt an eine Lösung heranzutasten. Also erstmal die rudimentäre Schleife und das Einlesen, dann die Überprüfung der eingegeben Werte und zuletzt die Aktion die darauf folgen soll.
 

vinno

Mitglied
ok schnell ein Tutorial zum Debuggen angeschaut und bin die Schleife Stück für Stück durchgegangen:
Die Schleife hat ein Ende. Aber wenn die Schleife endet, wird die IOException geschmissen und der manche teile zwischen der Schleife und dem catch-Block wird übersprungen. Hab diese teile in den catch-Block geschrieben und nun funktioniert alles. Mein erstes Programm ist fertig!
Danke euch alle für die Hilfe!
 

JStein52

Top Contributor
Ja klar. Er springt von der Stelle wo die Exception auftritt in den zugehörigen catch-Block !!!!! Lies dir bei Gelegenheit nochmal ein Kapitel über Exceptions durch !
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Codezeile die ich nicht verstehe Java Basics - Anfänger-Themen 7
B Kleine Erklärung zu einer Codezeile benötigt Java Basics - Anfänger-Themen 5
C Input/Output Codezeile erklären Java Basics - Anfänger-Themen 5
B Verständnisfrage Codezeile Java Basics - Anfänger-Themen 7
Binary.Coder Vor und nach jeder Codezeile etwas einfügen Java Basics - Anfänger-Themen 3
S OOP Probleme mit einer Codezeile Java Basics - Anfänger-Themen 5
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
T if-else Bedingung wird ignoriert Java Basics - Anfänger-Themen 4
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
P Webseite vom Smartmeter wird nur unleserlich angezeigt Java Basics - Anfänger-Themen 7
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
Oneixee5 Maven Plugin wird 2 mal ausgeführt Java Basics - Anfänger-Themen 10
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
C Was tun wenn .class erwartet wird ? Java Basics - Anfänger-Themen 6
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
K Warum wird mir hier nach dem ersten Durchlauf zwei mal "welchen Datentyp wollen sie übergeben?" ausgegeben ? Java Basics - Anfänger-Themen 1
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
schemil053 Multithread - Input verrutscht während etwas ausgegeben wird Java Basics - Anfänger-Themen 6
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
_user_q Timer - ScheduledExecutorService wird schon vorher beendet Java Basics - Anfänger-Themen 5
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
L Switch-Case Multiplikation wird nicht ausgegeben Java Basics - Anfänger-Themen 1
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
M Text wird in der Console nicht ausgegeben. Java Basics - Anfänger-Themen 11
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
sserio Math. Befehl wird rot markiert Java Basics - Anfänger-Themen 5
M Rechteck wird nicht angezeigt Java Basics - Anfänger-Themen 3
B Bungeecord | ProxiedPlayer wird nicht in ArrayList hinzugefügt Java Basics - Anfänger-Themen 1
U Methode wird genutzt, ohne dass ich die aufrufe? Java Basics - Anfänger-Themen 4
S Methoden Return Rückgabewert wird nicht übergeben Java Basics - Anfänger-Themen 8
M Mein quellcode wird nicht in der Konsole ausgegeben Java Basics - Anfänger-Themen 3
I Code wird nicht ausgeführt Java Basics - Anfänger-Themen 2
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
K Präzedenregeln in Java sagen, dass +expr und -expr vor + von Addition und - von Addition stehen, warum wird dann z. B. a+b als eine Addition ausgeführ Java Basics - Anfänger-Themen 7
M Was wird hier genau getestet? Java Basics - Anfänger-Themen 9
M Wie schreibe ich eine if-Verzweigung um, so dass ein Bedingungsoperator benutzt wird? Java Basics - Anfänger-Themen 9
I Programm erkennt nicht an das Array zurückgegeben wird trotz Initialisierung *einfach* Java Basics - Anfänger-Themen 9
K Jlabel mit itemlistevent Text gegeben, wird nicht angezeigt Java Basics - Anfänger-Themen 5
P Mein Programm wird zwar erfolgreich Compiliert, öffnet sich aber nicht Java Basics - Anfänger-Themen 6
M Referenzen zuweisen und wird gleichzeitig ausgeführt Java Basics - Anfänger-Themen 6
O System.out.println wird nicht ausgegeben? Java Basics - Anfänger-Themen 11
Zrebna Umgebungsvariable Wieso wird meine verwendete JDK-Version in der Prompt nicht erkannt? Java Basics - Anfänger-Themen 6
el_pato DialogFenster wird nicht in Schleife geöffnet? Java Basics - Anfänger-Themen 30
J if-Schleife innerhalb einer if-Schleife wird in der Konsole nicht gelesen Java Basics - Anfänger-Themen 4
P Apache Derby wird in Eclipse trotz Anbindung nicht gefunden Java Basics - Anfänger-Themen 6
H Array wird als Rückgabewert nicht akzeptiert? Java Basics - Anfänger-Themen 2
Poppigescorn scan.nextInt() wiederholen bis eine Zahl eingeben wird Java Basics - Anfänger-Themen 7
F Session wird mehrfach erzeugt Java Basics - Anfänger-Themen 11
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
fuerteb Compiler-Fehler Methode wird nicht bzw. als Fehler erkannt Java Basics - Anfänger-Themen 4
L JScrollPane wird nicht angezeigt Java Basics - Anfänger-Themen 10
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
J JTable Titel wird nicht angezeigt Java Basics - Anfänger-Themen 6
krgewb Long wird gerundet Java Basics - Anfänger-Themen 2
Zwanglos Warum wird nur die erste Zeile im while Block ausgeführt? Java Basics - Anfänger-Themen 8
F Wieso wird immer die falsche Mausposition angegeben? Java Basics - Anfänger-Themen 1
H GridPane wird nicht angezeigt Java Basics - Anfänger-Themen 0
M Was habe ich hier falsch, dass wenn ich z.B.: 11 eingebe mir false zurück gegeben wird? Java Basics - Anfänger-Themen 2
M Java Spiel wie Wer wird Millionär Java Basics - Anfänger-Themen 1
H Endkapital wird nicht korrekt ausgegeben. Java Basics - Anfänger-Themen 5
C Methodenrückgabe wird in der main nicht berücksichtigt Java Basics - Anfänger-Themen 2
X compareTo Methode wird ignoriert Java Basics - Anfänger-Themen 7
kodela Hauptklasse wird nicht gefunden Java Basics - Anfänger-Themen 3
H Befehl wird nicht ausgeführt - System.out.println Java Basics - Anfänger-Themen 3
I Input/Output Code wird doppelt ausgeführt Java Basics - Anfänger-Themen 3
P Bedingung in Schleife wird nicht ausgeführt Java Basics - Anfänger-Themen 5
P Variablen HttpResponse.getBody() wird automatisch org.json Object und kann nicht zu json.simple Object gecastet werden? Java Basics - Anfänger-Themen 7
N Selection Algorithmus: Methode wird nicht erkannt (BlueJ) Java Basics - Anfänger-Themen 3
N package wird doppelt im exporer angezeigt Java Basics - Anfänger-Themen 2
N Bedinugng If-Abfrage wird nie erfüllt Java Basics - Anfänger-Themen 4
M Else wird nicht ausgeführt. Java Basics - Anfänger-Themen 5
H Wie wird ein String intern gespeichert? Java Basics - Anfänger-Themen 10
A char array wird überschrieben Java Basics - Anfänger-Themen 6
E Methoden Action Event wird nicht vollständig ausgeführt Java Basics - Anfänger-Themen 3
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
S setContentView(R.Layout.XXX) wird Rot angezeigt Java Basics - Anfänger-Themen 0
C Beispiel-Code mit Pair wird nicht compiliert. Java Basics - Anfänger-Themen 8
S Integer Wert wird nicht übernommen Java Basics - Anfänger-Themen 2
J Int wird als Null ausgegeben Java Basics - Anfänger-Themen 8
F Switch case wird als char nicht erkannt.... Java Basics - Anfänger-Themen 6
S for-Schleife wird ignoriert Java Basics - Anfänger-Themen 15
NeoLexx Variable für Array wird nicht korrekt übergeben Java Basics - Anfänger-Themen 45
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
M BorderLayout, 2Panels, EAST wird nicht angezeigt ?? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben