Eingabe eines Textfeldes mit Inhalt einer Datei vergleichen

Status
Nicht offen für weitere Antworten.

Recover

Mitglied
Hi!

Es gibt da so ein Spiel im Radio das nennt sich 100.000 für 10. Da kann man mit einem 10€ Schein
100.000€ gewinnen, wenn die ID des Scheines stimmt.

Nun hab ich hier schon 60 x 10€ Scheine liegen und es ist immer ziemlich mühsam diese dann mit dem
Code zu vergleichen. Deswegen hab ich mich mal an den Rechner gemacht um ein Programm zu schreiben
was mir die Arbeit etwas erleichtert.

Ich habe eine Datei die heist "Scheine.txt". Darin sind die IDs der ganzen Scheine untereinander aufgelistet.
So hier:

X18352056228
Y84624395007
U84632101646

Nun habe ich in Swing ein GUI erstellt welches ein Textfeld und einen Button besitzt. Die Funktion der beiden
dürfte klar sein. Jetzt habe ich leider nur noch ein Problem. Die Eingabe im Textfeld soll schauen ob es die gleiche
im Scheine.txt schon gibt. Diese ID soll dann angezeigt werden. Aber auch wenn die letzten 2-4 Zahlen Stimmen sollen
die IDs angezeigt werden. Die übereinstimmenenden Zahlen sollen dann auch nach Möglichkeit rot gefärbt werden.

Ich hab hier mal meinen bisherigen Code und wäre über Hilfe sehr dankbar!

Code:
import java.io.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Programm {

    public static void main(String[] args) throws IOException {

        Fenster frame = new Fenster();
        frame.setVisible(true);
    }

}

class Fenster extends JFrame implements ActionListener {

    JLabel ausgabeLabel = new JLabel();
    JTextField textfeld1 = new JTextField(12);
    BufferedReader   tastatur    =   new BufferedReader(new InputStreamReader(System.in));

    public Fenster() {
        this.setTitle("100.000 für 10");
        this.setSize(300, 150);
        this.setLocationRelativeTo(null);
        this.setLayout(new FlowLayout());
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JButton suchenButton = new JButton("Suchen");
        JPanel panelEingabe, panelAusgabe, panelButton;
        panelEingabe = new JPanel();
        panelAusgabe = new JPanel();
        panelButton = new JPanel();

        this.add(panelEingabe);
        this.add(panelButton);
        this.add(panelAusgabe);        
        
        panelEingabe.setLayout(new FlowLayout());
        panelEingabe.add(textfeld1);

        panelButton.setLayout(new FlowLayout());
        panelButton.add(suchenButton);
        suchenButton.addActionListener(this);

        panelAusgabe.setLayout(new FlowLayout());
        panelAusgabe.add(ausgabeLabel);

    }

    public String geleseneDaten() {
        String inhalt = "";
        try {
            FileReader datei = new FileReader("scheine.txt");
            BufferedReader readDatei = new BufferedReader(datei);

            inhalt = readDatei.readLine();
        } catch (IOException io) {
            ausgabeLabel.setText("Datei nicht gefunden!");
        }
        return inhalt;
    }

    public void actionPerformed(ActionEvent ae) {
        
        
    }

}
 
zunächst einmal:
lege die 60 Strings doch direkt in ein String-Array in eine Hilfs-Klasse,
ist eine Textdatei einfacher zu handeln?

und selbst wenn: dann hat die Transformation der Text-Datei in ein String-Array doch nichts damit zu tun,
was da in der Datei drinsteht oder wie die Daten weiterverarbeitet werden,
versuche solche Dinge logisch zu strukturieren und einfache Fragen zu stellen
("Wie liest man Strings in ein String-Array ein?" statt 20 Zeilen Beschreibung und 50 unnötige Zeilen von den 70 Zeilen Code )

deine Operation geleseneDaten führt nur einmal readLine aus,
liest also nur eine Zeile ein,
wenn du mehr willst, dann mache öfter readLine,
bis readLine null zurückgibt (Dateiende)

edit:
ok, fehlt noch mehr außer Datei einlesen, dafür ist die vollständige Beschreibung schon hilfreich, stimmt 😉
 
Die Textdatei hab ich gewählt, damit man schnell mal ein Code hinzufügen kann, ohne das Programm umzuschreiben.

Also lass ich jetzt den Inhalt der Datei in ein Array einlesen?
Mit welchem Befehl lass ich die Zahlen von hinten an kontrollieren ob sie übereinstimmen?
Und wie realisier ich das mit dem Einfärben der letzten Zahlen?

Paar Codeschnippsel wären ganz hilfreich, wenn es denn keine Umstände macht.
 
> Also lass ich jetzt den Inhalt der Datei in ein Array einlesen?
lesen statt lassen?
da du die Anzahl am Anfang nicht kennst, füge jede Zeile in eine Liste ein,
die Liste kannst du am Ende weiterverwenden oder ein Array draus machen

Schleife über alle Zeilen, steht in jedem Lehrbuch beim Datei-Einlesen

> Mit welchem Befehl lass ich die Zahlen von hinten an kontrollieren ob sie übereinstimmen?
mit den String-Befehlen die du kennen solltest,
bevor du so eine Aufgabe anfängst, ich bringe sie dir nicht alle bei 😉
charAt, contains, indexof, substring usw., siehe Lehrbuch


> Und wie realisier ich das mit dem Einfärben der letzten Zahlen?
das wüßte ich spontan nicht, ich würde in ein Lehrbuch schauen 😉
 
Ok, danke Slater.

Ich weis jetzt wo ich ansetzen muss.
Der Thread hätt wohl besser ins Anfängerforum gepasst....
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben