Ein einfacher Chatbot (simuliert chat)

osion

Bekanntes Mitglied
Hallo miteinander :lol:alles klar ?:applaus:

Ich habe jetzt schon einige Übungen für Java gemacht, aber nur Übungen zu machen ist mir der Zeit doch recht demotivierend. Also mache ich ein Projekt, welches ich noch nicht umsetzen kann, aber halt die Motivitation zum lernen grösser ist.

Der Ablauf ist einfach: Eingabe --->Pruefung der Eingabe--->Einlesen vom File in einem Speicher, z. B. Array ---> Ausgabe

Probleme momentan:

1
Ich habe ein .txt File wo ich die möglichen Antworten drin habe, doch das Problem ist wenn dort steht Hallo miteinander, dann nimmt er nur Hallo.

Ich will das er das per Trennzeichen trennt (auch weil später noch andere Werte auf der gleiche Linie stehen sollen). Es soll eine Methode geben die super cvs, aber leider kein richtige Einführung dazu gefunden.

2
Mit dem Scanner ist es nicht möglich zum File-Anfang zu gehen, ich frage mich wie ich das am besten umgehe (da ein zweiter Scanner blödsin ist ne?).

CODE:

Das Return in dem zweiten Code sollte nicht beachtet werden, das ist nur das es kein Fehler in der Main nacher gibt.

Main

Java:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

import antworten.Anfangsfrage;

import dateien.Test;

public class Grund {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

			
			String eingabeBenutzerGespeichert;


			Scanner eingabeBenutzer =new Scanner(System.in);
			
		//	FileWriter x = null;
			
			
			System.out.println("Erste Eingabe bitte");
			File anfangsfrage1=new File("D:\\zb\\Hallo.txt");
			

			eingabeBenutzerGespeichert=eingabeBenutzer.next();

			Anfangsfrage ersteFrage=new Anfangsfrage(anfangsfrage1);
			ersteFrage.ListeEinlesen(eingabeBenutzerGespeichert);

Java:
package antworten;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Random;
import java.util.Scanner;

public class Anfangsfrage {

	Scanner leser;
	Scanner eingabe;
	String[] ersteAntwort = new String[50];
	String pruefwert;

	public Anfangsfrage(File anfangsfrage1) {
		try {
			leser = new Scanner(anfangsfrage1);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

public Random ListeEinlesen(String eingabeBenutzerGespeichert) {
		int i = 0;
		boolean pruefen = false;
		String ausgabe = null;
		String pruefwert = null;

		AnfangsEingabePruefung: do {
			System.out.println(pruefwert);
			pruefwert = leser.next();
			System.out.println(pruefwert);

			if (eingabeBenutzerGespeichert.equals(pruefwert)) {
				pruefen = true;
				break AnfangsEingabePruefung;
			}
		} while (leser.hasNext());

		leser.r;

		for (i = 0; i < 15; i++) {
			ersteAntwort[i] = leser.next();

		}
		Random antwort = new Random();
		System.out.println("Erster Eintrag " +ersteAntwort[0]);
		System.out.println(ersteAntwort[antwort.nextInt(15)]);
		leser.close();
	}
		return antwort;
}
}


gruss
 
1)
Java:
BufferedReader br = new BufferedReader(new FileReader("deinedatei"));
String line
while((line = br.readLine()) != null){
System.out.println(line);
}

das gibt dir die gesamte zeile.. du kannst alles in eine arraylist schreiben und trennen tust du mit der split() methode

2)du willst doch den int wert und nicht das random objekt zurück geben, oder?
 
1)
Java:
BufferedReader br = new BufferedReader(new FileReader("deinedatei"));
String line
while((line = br.readLine()) != null){
System.out.println(line);
}

das gibt dir die gesamte zeile.. du kannst alles in eine arraylist schreiben und trennen tust du mit der split() methode

2)du willst doch den int wert und nicht das random objekt zurück geben, oder?

Ich habe jetzt alle Listen in Arrays gespeichert und suche die einzeln ab. Gibt es eine nette Funktion welche das direkt macht, d.h. das ich ArrayListen Angeben kann und er arbeitet bei jeder ArrayList dies nacheinander ab?

p.s. meine Nachricht heute
hr Kennwort ist 1579 Tage alt und daher nicht mehr gültig. :lol::lol::lol:
 
Ich bin momentan an einem Programm, dass jetzt etwa 20 Klassen hat. Innerhalb des Programms werden Dateien eingelesen und Dateien geschrieben oder mit den Daten Arrays gefüllt....

Soo kurz was es im Programm geht 😀

Problem:
Ich habe Dateien welche so aussehen Hallo;2;454 und wenn ich da mit meinem ArrayList arbeite brauche ich den Wert wieviele Einträge pro Linie vorkommen.


Frage:
Würdet ihr solche Werte als Statisch aufrufen oder eine eigene Klasse mit STANDTWERTE Variabeln erstellen?




......
Zweitens: Ich will eine List<String> welche nur mit Zahlen gefühlt ist zu einem List<Integer> ändern.

Frage: Muss ich jedes Zeichen per Char in die List<Integer> transferieren oder gibt es dafür einen einfacheren Weg?


gruss
Bit
 
Die erste Frage ist absolut unverständlich. Kannst du dein Problem etwas genauer schildern?
Zur zweiten Frage, da gibts [c]Integer.parseInt(String)[/c].
 
Also ich habe, z. B. Wert AnzahlWerteProZeileInDatei | Test;1232;454

Jetzt ist ja so, dass ich bei der Entwicklung vielleicht denken, dass eine Spalte pro Zeile nicht schlecht ist. Mein Problem ist das ich das jetzt überall ändern müsste und schnell mal vergessen geht.


Mir ist schon klar, dass ich die Werte entweder Static oder in einer andere Klasse packen könnte, mich nimmt aber wunder wie man das in der Praxis macht. Naja...halt jemand mit Erfahrung.
 
Man verwendet in der Praxis eigentlich keine Kommaseparierten Daten aus Textfiles... Und wenn überhaupt, dann mit irgendeiner CSV Lib. Ansonsten wird XML, DBs, Properties etc. präferiert.
 

Zurück
Oben