Hi Ihr,
ich habe mich an einem Chatbot versucht, um damit eine Schulaufgabe zu lösen.
Dazu habe ich drei Klassen erstellt:
Mein Problem ist, dass mir beim testen aller Fragen, immer wieder bei bestimmten (auch immer die gleichen) Fragen ein Fehler ausgegeben wurde.
Mein Programm meint diese Frage nicht in der Datei zu finden, obwohl ich sie 1:1 aus dieser kopiert habe.
Was ist das Problem? Ich komme hier nicht weiter.
Danke für eure Zeit.
P.S. Falls die Dateien auch gebraucht werden wäre das kein Problem. Müsste nur gesagt werden.
ich habe mich an einem Chatbot versucht, um damit eine Schulaufgabe zu lösen.
Dazu habe ich drei Klassen erstellt:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
public class Philosophie extends Frame {
private Label lPhilosophie = new Label();
private TextArea textArea1 = new TextArea("", 1, 1, TextArea.SCROLLBARS_VERTICAL_ONLY);
private TextArea textArea2 = new TextArea("", 1, 1, TextArea.SCROLLBARS_NONE);
private TextField tfHelloWorld = new TextField();
private Button bLos = new Button();
private Button bHilfe = new Button();
private String anfrage, wiedergabe;
private int position;
private Question q = new Question();
private Answer a = new Answer();
public Philosophie() {
super();
addWindowListener (new WindowAdapter() {
public void windowClosing(WindowEvent evt) { dispose(); }
});
int frameWidth = 640;
int frameHeight = 554;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width)/2;
int y = (d.height - getSize().height)/2;
setLocation(x,y);
setTitle("Philosophie");
setResizable(false);
Panel cp = new Panel(null);
add(cp);
cp.setBackground(new Color(0x404040));
lPhilosophie.setBounds(16, 8, 593, 73);
lPhilosophie.setText("Philosophie");
lPhilosophie.setAlignment(Label.CENTER);
lPhilosophie.setBackground(new Color(0x404040));
lPhilosophie.setFont(new Font("Dialog", Font.PLAIN, 28));
lPhilosophie.setForeground(Color.WHITE);
cp.add(lPhilosophie);
textArea1.setBounds(16, 88, 593, 321);
textArea1.setBackground(new Color(0x404040));
textArea1.setText("");
textArea1.setForeground(Color.WHITE);
textArea1.setEnabled(true);
textArea1.setFont(new Font("Dialog", Font.PLAIN, 16));
textArea1.setFocusable(false);
cp.add(textArea1);
tfHelloWorld.setBounds(16, 416, 497, 41);
tfHelloWorld.setBackground(new Color(0x404040));
tfHelloWorld.setForeground(Color.WHITE);
tfHelloWorld.setFont(new Font("Dialog", Font.PLAIN, 16));
tfHelloWorld.setText("");
cp.add(tfHelloWorld);
bLos.setBounds(16, 464, 593, 41);
bLos.setLabel("Los!");
bLos.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
bLos_ActionPerformed(evt);
}
});
bLos.setBackground(new Color(0x404040));
bLos.setFont(new Font("Dialog", Font.PLAIN, 12));
bLos.setForeground(Color.WHITE);
cp.add(bLos);
bHilfe.setBounds(520, 416, 89, 41);
bHilfe.setLabel("Hilfe");
bHilfe.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
bHilfe_ActionPerformed(evt);
}
});
bHilfe.setBackground(new Color(0x404040));
bHilfe.setFont(new Font("Dialog", Font.PLAIN, 12));
bHilfe.setForeground(Color.WHITE);
cp.add(bHilfe);
// Ende Komponenten
setVisible(true);
}
public static void main(String[] args) {
new Philosophie();
}
public void bLos_ActionPerformed(ActionEvent evt) {
anfrage = tfHelloWorld.getText();
q.setFrage(anfrage);
anfrage = q.getFrage();
position = q.getPosition();
a.setPosition(position);
wiedergabe = a.getAntwort();
tfHelloWorld.setText("");
textArea1.append(anfrage + "\n");
textArea1.append(wiedergabe + "\n\n");
}
public void bHilfe_ActionPerformed(ActionEvent evt) {
JFrame newframe = new JFrame();
newframe.setSize(400, 315);
newframe.setLocationRelativeTo(null);
newframe.setTitle("Hilfe");
newframe.add(textArea2);
newframe.setVisible(true);
newframe.setResizable(false);
textArea2.setBackground(new Color(0x404040));
textArea2.setForeground(Color.WHITE);
textArea2.setEnabled(true);
textArea2.setFocusable(false);
textArea2.setText("");
}
}
Java:
import java.io.*;
import java.util.List;
import java.util.stream.Collectors;
public class Question {
private List<String> question;
private String Frage;
private int position;
public Question() {
File fragen = new File("D:\\Programme\\Eclipse\\Workplace\\Philosophie\\Dokumente\\question.txt");
try(BufferedReader reader = new BufferedReader(new FileReader(fragen))) {
question = reader.lines().skip(1).collect(Collectors.toList());
} catch (IOException ex) {
throw new UncheckedIOException(ex);
}
}
public String getFrage() {
if(question.contains(Frage)) {
} else {
Frage = "404 Question not found";
}
return Frage;
}
public int getPosition() {
position = question.indexOf(Frage);
if(Frage == "404 Question not found") {
position = 0;
}
return position;
}
public void setFrage(String FrageNew) {
Frage = FrageNew;
}
}
Java:
import java.io.*;
import java.util.List;
import java.util.stream.Collectors;
public class Answer {
private List<String> answer;
private String Antwort;
private int Position;
public Answer() {
File antworten = new File("D:\\Programme\\Eclipse\\Workplace\\Philosophie\\Dokumente\\answer.txt");
try(BufferedReader reader = new BufferedReader(new FileReader(antworten))) {
answer = reader.lines().skip(1).collect(Collectors.toList());
} catch (IOException ex) {
throw new UncheckedIOException(ex);
}
}
public String getAntwort() {
Antwort = answer.get(Position);
if(Position == 0) {
Antwort = "Please choose another question.";
}
return Antwort;
}
public void setPosition(int PositionNew) {
Position = PositionNew;
}
}
Mein Problem ist, dass mir beim testen aller Fragen, immer wieder bei bestimmten (auch immer die gleichen) Fragen ein Fehler ausgegeben wurde.
Mein Programm meint diese Frage nicht in der Datei zu finden, obwohl ich sie 1:1 aus dieser kopiert habe.
Was ist das Problem? Ich komme hier nicht weiter.
Danke für eure Zeit.
P.S. Falls die Dateien auch gebraucht werden wäre das kein Problem. Müsste nur gesagt werden.