Compiler-Fehler Anfänger sucht Hilfe. Fehler beim Compilieren

Seppomat

Mitglied
Hallo liebes Forum,

Als erstes möchte ich mich entschuldigen sollte ich mit diesem Post nicht das richtige Unterforum getroffen haben. Kurz zu mir, ich bin Java Anfänger der sich seit wenigen Tagen mit dieser Sprache beschäftigt. (kompletter Programmierneuling ;-) ) also steinigt mich bitte nicht wenn dieser Code unsauber aussieht.

Jedenfalls, hab ich heute mal versucht einen kleinen Chatbot zu schreiben, mit deren Hilfe man einen guten Film suchen kann. Völlig schlicht, wenige Auswahlen etc. Ich bin noch nicht ganz fertig. Ich habe vorhin mehrere Möglichkeiten anhand einer Switch Anweisung eingebaut, welche auch problemlos funtionieren, jedenfalls bringt mir Eclipse keine Fehler in den Zeilen. Es hat sich aber irgendwo in meinem Code ein Syntax Fehler eingeschlichen und ich finde ihn einfach nicht. Ich hoffe Ihr könnt mir helfen. Ich habe die Zeile im Code per //Kommentar hervorgehoben.

Danke!
Seppomat
Java:
package pack1;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class main extends JFrame {

    // Typing Area:
    private JTextField txtEnter = new JTextField();

    // Chat Area:
    private JTextArea txtChat = new JTextArea();

    public main() {
        // Frame Attributes:
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(600, 600);
        this.setVisible(true);
        this.setResizable(false);
        this.setLayout(null);
        this.setTitle("Filmtastisch");

        // txtEnter Attributes:
        txtEnter.setLocation(2, 540);
        txtEnter.setSize(590, 30);

        // txtEnter Action Event:
        txtEnter.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                String uText = txtEnter.getText();
                txtChat.append("Du: " + uText + "\n");
               
                if (uText.contains("Hi"))
                    botSay("Hallo, wie kann ich denn helfen?");

                if (uText.contains("Film")) {
                    botSay("Da bist Du bei mir an der richtigen Adresse! Welches Genre darf es denn sein?");
               
                if (uText.contains("Horror"))         uTextSwitch = 1;
                if (uText.contains("Action"))         uTextSwitch = 2;
                if (uText.contains("Komödie"))         uTextSwitch = 3;
                if (uText.contains("Drama"))         uTextSwitch = 4;
                if (uText.contains("Liebesfilm"))     uTextSwitch = 5;
                if (uText.contains("Kinder"))         uTextSwitch = 6;
                if (uText.contains("Science"))         uTextSwitch = 7;
               
                Switch (uTextSwitch) { // IN DIESER ZEILE IST DER FEHLER "SYNTAX ERROR, INSERT ";" TO COMPLETE STATEMENT
           
                case1: botSay("Da empfehle ich Dir diesen Film hier");
                
                case2: botSay("Actionfilm also.. Geballer und viel Krach. Na wenn du auf sowas stehst dann nimm dir diesen hier mal zur Brust");
                
                case3: botSay("Lachen bis die Muskeln brennen, bitteschön!");
               
                case4: botSay("Solche Filme magst Du also? Nagut! Dann bitteschön");
               
                case5: botSay("Du bist sicherlich ein Mädel, falls du ein Kerl bist würde ich mir ernsthafte Gedanken machen! Der Film hier soll gut sein");
               
                case6: botSay("Hachja, nochmal Kind sein, wer möchte das nicht. Gut das es hier viele gute Filme gibt");
               
                case7: botSay("Science Fiction also, mein Lieblingsgenre! Gesehen haben musst du unbedingt diesen hier!");
               
                Default: botSay("Hmm, dieses Genre ist mir leider nicht bekannt. Versuch es doch noch einmal"); break;
                }
               
               
                   

                }

           
       
                   
               
                txtEnter.setText("");
            }
        });

        // txtChat Attributes:
        txtChat.setLocation(15, 5);
        txtChat.setSize(560, 510);
        txtChat.setEditable(false);
       

        // Add Items To Frame:
        this.add(txtEnter);
        this.add(txtChat);
    }

    public void botSay(String s) {
        txtChat.append("Sophie: " + s + "\n");
    }

    public static void main(String[] args) {
        new main();
    }

}
 
Ich sag ja, Anfängerfehler 😀
Nun sind alle Fehler raus. Es hat sich aber direkt der nächste angeschlossen. Compilieren funktioniert jetzt, alles läuft wie es sollte BIS zu dem Punkt, an welchem ich definiert habe das der User sein Genre festlegen soll. Ich hab es ja per switch Anweisungen definiert, praktisch an der Stelle wo

if (uText.contains ("Horror")); uTextswitch = 1; ausgegeben wird, kommt leider im Programm nichts mehr. Eigentlich sollte ja nach der Eingabe von Horror per case 1 = botSay("Da empfehle ich dir diesen hier"); erscheinen. Es kommt aber leider nichts 🙁
Java:
package pack1;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class main extends JFrame {

    int uTextSwitch;

    // Typing Area:
    private JTextField txtEnter = new JTextField();

    // Chat Area:
    private JTextArea txtChat = new JTextArea();

    public main() {
        // Frame Attributes:
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(600, 600);
        this.setVisible(true);
        this.setResizable(false);
        this.setLayout(null);
        this.setTitle("Filmtastisch");

        // txtEnter Attributes:
        txtEnter.setLocation(2, 540);
        txtEnter.setSize(590, 30);

        // txtEnter Action Event:
        txtEnter.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                String uText = txtEnter.getText();
                txtChat.append("Du: " + uText + "\n");
               
                if (uText.contains("Hi"))
                    botSay("Hallo, wie kann ich denn helfen?");

                if (uText.contains("Film")) {
                    botSay("Da bist Du bei mir an der richtigen Adresse! Welches Genre darf es denn sein?");
               
                if (uText.contains("Horror"))         uTextSwitch = 1;
                if (uText.contains("Action"))         uTextSwitch = 2;
                if (uText.contains("Komödie"))         uTextSwitch = 3;
                if (uText.contains("Drama"))         uTextSwitch = 4;
                if (uText.contains("Liebesfilm"))     uTextSwitch = 5;
                if (uText.contains("Kinder"))         uTextSwitch = 6;
                if (uText.contains("Science"))         uTextSwitch = 7;
               
                switch (uTextSwitch) {
           
                case 1: botSay("Da empfehle ich Dir diesen Film hier");
                
                case 2: botSay("Actionfilm also.. Geballer und viel Krach. Na wenn du auf sowas stehst dann nimm dir diesen hier mal zur Brust");
                
                case 3: botSay("Lachen bis die Muskeln brennen, bitteschön!");
               
                case 4: botSay("Solche Filme magst Du also? Nagut! Dann bitteschön");
               
                case 5: botSay("Du bist sicherlich ein Mädel, falls du ein Kerl bist würde ich mir ernsthafte Gedanken machen! Der Film hier soll gut sein");
               
                case 6: botSay("Hachja, nochmal Kind sein, wer möchte das nicht. Gut das es hier viele gute Filme gibt");
               
                case 7: botSay("Science Fiction also, mein Lieblingsgenre! Gesehen haben musst du unbedingt diesen hier!");
               
                Default: botSay("Hmm, dieses Genre ist mir leider nicht bekannt. Versuch es doch noch einmal"); break;
                }
               
               
                   

                }

           
       
                   
               
                txtEnter.setText("");
            }
        });

        // txtChat Attributes:
        txtChat.setLocation(15, 5);
        txtChat.setSize(560, 510);
        txtChat.setEditable(false);
       

        // Add Items To Frame:
        this.add(txtEnter);
        this.add(txtChat);
    }

    public void botSay(String s) {
        txtChat.append("Sophie: " + s + "\n");
    }

    public static void main(String[] args) {
        new main();
    }

}
 
Die Genre-Abfragen finden ja nur statt, wenn auch "Film" eingegeben wurde. Die Einrückungen sind nicht korrekt, so daß man es leicht übersehen kann. Gib zum Testen doch mal mit derselben Eingabe "Film Horror" ein.
Ausserdem benötigst du noch break-Anweisungen in deinen case-Zweigen.
 
Ok, break Anweisungen habe ich hinzugefügt. Danke dafür! Jetzt ist allerdings noch das Problem, das er mir nur eine Ausgabe bringt wenn ich "Film Horror" eingebe. Ich möchte aber, das er mir nach der Frage nach dem Genre, in welches ich natürlich nur z.B "Horror" eintippe, ohne das "Film", das er mir natürlich dann die richtige case Anweisung ausgibt. Weiß da jemand Rat dazu?

mfg
Java:
package pack1;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class main extends JFrame {

    int uTextSwitch;

    // Typing Area:
    private JTextField txtEnter = new JTextField();

    // Chat Area:
    private JTextArea txtChat = new JTextArea();

    public main() {
        // Frame Attributes:
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(600, 600);
        this.setVisible(true);
        this.setResizable(false);
        this.setLayout(null);
        this.setTitle("Filmtastisch");

        // txtEnter Attributes:
        txtEnter.setLocation(2, 540);
        txtEnter.setSize(590, 30);

        // txtEnter Action Event:
        txtEnter.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                String uText = txtEnter.getText();
                txtChat.append("Du: " + uText + "\n");
              
                if (uText.contains("Hi"))
                    botSay("Hallo, wie kann ich denn helfen?");

                if (uText.contains("Film")) {
                    botSay("Da bist Du bei mir an der richtigen Adresse! Welches Genre darf es denn sein?");
              
                if (uText.contains("Horror"))         uTextSwitch = 1;
                if (uText.contains("Action"))         uTextSwitch = 2;
                if (uText.contains("Komödie"))         uTextSwitch = 3;
                if (uText.contains("Drama"))         uTextSwitch = 4;
                if (uText.contains("Liebesfilm"))     uTextSwitch = 5;
                if (uText.contains("Kinder"))         uTextSwitch = 6;
                if (uText.contains("Science"))         uTextSwitch = 7;
              
                switch (uTextSwitch) {
          
                case 1: botSay("Da empfehle ich Dir diesen Film hier"); break;
               
                case 2: botSay("Actionfilm also.. Geballer und viel Krach. Na wenn du auf sowas stehst dann nimm dir diesen hier mal zur Brust"); break;
               
                case 3: botSay("Lachen bis die Muskeln brennen, bitteschön!"); break;
              
                case 4: botSay("Solche Filme magst Du also? Nagut! Dann bitteschön");
              
                case 5: botSay("Du bist sicherlich ein Mädel, falls du ein Kerl bist würde ich mir ernsthafte Gedanken machen! Der Film hier soll gut sein"); break;
              
                case 6: botSay("Hachja, nochmal Kind sein, wer möchte das nicht. Gut das es hier viele gute Filme gibt"); break;
              
                case 7: botSay("Science Fiction also, mein Lieblingsgenre! Gesehen haben musst du unbedingt diesen hier!"); break;
              
                default: botSay("Hmm, dieses Genre ist mir leider nicht bekannt. Versuch es doch noch einmal"); break;
                }
              
              
                  

                }

          
      
                  
              
                txtEnter.setText("");
            }
        });

        // txtChat Attributes:
        txtChat.setLocation(15, 5);
        txtChat.setSize(560, 510);
        txtChat.setEditable(false);
      

        // Add Items To Frame:
        this.add(txtEnter);
        this.add(txtChat);
    }

    public void botSay(String s) {
        txtChat.append("Sophie: " + s + "\n");
    }

    public static void main(String[] args) {
        new main();
    }

}
 
Kleines Update:
Ich habe das Problem lösen können. Ich hab die default Anweisung gelöscht. Nu funktioniert alles wie es soll.
Allerdings, und das ist mein letztes Anliegen, soll natürlich eine gewisse Meldung ausgegeben werden, wenn KEINER der Cases eintritt, bzw wenn eine Anweisung geschrieben wird die weder "Hi" noch "Film" enthält. Wie schreibe ich das am besten?
Java:
package pack1;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class main extends JFrame {

    int uTextSwitch;

    // Typing Area:
    private JTextField txtEnter = new JTextField();

    // Chat Area:
    private JTextArea txtChat = new JTextArea();

    public main() {
        // Frame Attributes:
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(600, 600);
        this.setVisible(true);
        this.setResizable(false);
        this.setLayout(null);
        this.setTitle("Filmtastisch");

        // txtEnter Attributes:
        txtEnter.setLocation(2, 540);
        txtEnter.setSize(590, 30);

        // txtEnter Action Event:
        txtEnter.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                String uText = txtEnter.getText();
                txtChat.append("Du: " + uText + "\n");
               
                if (uText.contains("Hi"))
                    botSay("Hallo, wie kann ich denn helfen?");

                if (uText.contains("Film")) {
                    botSay("Da bist Du bei mir an der richtigen Adresse! Welches Genre darf es denn sein?");}
                {
                    if (uText.contains("Horror"))
                        uTextSwitch = 1;
                    if (uText.contains("Action"))
                        uTextSwitch = 2;
                    if (uText.contains("Komödie"))
                        uTextSwitch = 3;
                    if (uText.contains("Drama"))
                        uTextSwitch = 4;
                    if (uText.contains("Liebesfilm"))
                        uTextSwitch = 5;
                    if (uText.contains("Kinder"))
                        uTextSwitch = 6;
                    if (uText.contains("Science"))
                        uTextSwitch = 7;

                    switch (uTextSwitch) {

                    case 1:
                        botSay("Da empfehle ich Dir diesen Film hier");
                        break;

                    case 2:
                        botSay("Actionfilm also.. Geballer und viel Krach. Na wenn du auf sowas stehst dann nimm dir diesen hier mal zur Brust");
                        break;

                    case 3:
                        botSay("Lachen bis die Muskeln brennen, bitteschön!");
                        break;

                    case 4:
                        botSay("Solche Filme magst Du also? Nagut! Dann bitteschön"); break;

                    case 5:
                        botSay("Du bist sicherlich ein Mädel, falls du ein Kerl bist würde ich mir ernsthafte Gedanken machen! Der Film hier soll gut sein");
                        break;

                    case 6:
                        botSay("Hachja, nochmal Kind sein, wer möchte das nicht. Gut das es hier viele gute Filme gibt");
                        break;

                    case 7:
                        botSay("Science Fiction also, mein Lieblingsgenre! Gesehen haben musst du unbedingt diesen hier!");
                        break;

                   
                   
                   
                    }

                }

                txtEnter.setText("");
            }
        });

        // txtChat Attributes:
        txtChat.setLocation(15, 5);
        txtChat.setSize(560, 510);
        txtChat.setEditable(false);

        // Add Items To Frame:
        this.add(txtEnter);
        this.add(txtChat);
    }

    public void botSay(String s) {
        txtChat.append("Sophie: " + s + "\n");
    }

    public static void main(String[] args) {
        new main();
    }

}
 
default ist dafür schon richtig, aber auch klein am Anfang.
Und wenn es nicht "Hi" etc. ist, musst du einfach einen else{//code}-Zweig erstellen, wo du diesen Fall entsprechen behandelst.
 

Neue Themen


Zurück
Oben