ERLEDIGT
NEIN
NEIN
ANTWORTEN
29
29
ZUGRIFFE
959
959
EMPFEHLEN
-
Code :
1
String[] array = vokabel.split("\\.");
-
readLine liefert also null...da wird nocheinmal der komplette aktuelle Code nötig werden
-
Also nicht meckern, ich hab alles nochmal neu geschrieben. Aber hier mein Code:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
import java.awt.*; import java.awt.event.*; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.Charset; import javax.swing.*; import javax.swing.event.*; /** * * Beschreibung * * @version 1.0 vom 06.09.2010 * @author */ public class Vokabeltrainer extends JFrame { // Anfang Attribute private JTextField jTextField1 = new JTextField(); private JTextField jTextField2 = new JTextField(); private JButton jButton1 = new JButton(); private JButton jButton2 = new JButton(); private JLabel jLabel1 = new JLabel(); private JLabel jLabel2 = new JLabel(); // Ende Attribute public Vokabeltrainer(String title) throws Exception { // Frame-Initialisierung super(title); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); int frameWidth = 580; int frameHeight = 327; 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); Container cp = getContentPane(); cp.setLayout(null); // Anfang Komponenten final BufferedReader in = new BufferedReader(new InputStreamReader( new FileInputStream(new File( "C:\\Users/Yanik/Pictures/Documents/vokabeln.txt")), // Charset.forName("ISO-8859-1"))); Charset.forName("UTF-8"))); jTextField1.setBounds(200, 64, 361, 24); jTextField1.setText(""); cp.add(jTextField1); jTextField2.setBounds(200, 112, 361, 24); jTextField2.setText(""); cp.add(jTextField2); jButton1.setBounds(416, 240, 145, 49); jButton1.setText("Abbrechen"); jButton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jButton1_ActionPerformed(evt); } }); cp.add(jButton1); jButton2.setBounds(256, 240, 145, 49); jButton2.setText("Weiter"); jButton2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { try { String vokabel = in.readLine(); String[] array = vokabel.split("\\."); jTextField1.setText(array[0]); System.out.println(vokabel); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); cp.add(jButton2); jLabel1.setBounds(24, 64, 149, 24); jLabel1.setText("Deutschvokabel"); jLabel1.setFont(new Font("MS Sans Serif", Font.BOLD, 17)); cp.add(jLabel1); jLabel2.setBounds(24, 112, 154, 24); jLabel2.setText("Englischvokabel"); jLabel2.setFont(new Font("MS Sans Serif", Font.BOLD, 17)); cp.add(jLabel2); // Ende Komponenten setResizable(false); setVisible(true); } // Anfang Methoden public void jButton1_ActionPerformed(ActionEvent evt) { System.exit(0); } public void jButton2_ActionPerformed(ActionEvent evt) throws Exception { } // Ende Methoden public static void main(String[] args) throws Exception { new Vokabeltrainer("Vokabeltrainer"); } }
Und die Datei:
Code :1 2 3
hund.dog Katze.cat Maus.mouse
-
Wird noch mehr gebraucht****
-
Damit das nicht jeder zu Hause testen muss, gibt doch bei jedem actionPerformed aus, was du aus der Datei gelesen hast. Also nach Zeile 73, dann erübrigt sich deine Frage womöglich. Und dann poste bitte die Ausgabe.
-
Oh, ich hab den Fehler selber gefunden. (Peinlich, peinlich)
Der Pfad zur Datei war Falsch -_-
-
So, jetzt werden die Vokabeln angezeigt.
Aber ich möchte jetzt wenn ich auf den Button drücke, dass überprüft wird ob die eingegbene Vokabel vom jTextField2 mit dem array[1], übereinstimmt.
Wenn ja soll int r um 1 erhöht werden, (wenn nicht, dann soll gar nichts passieren), und dann soll die nächste Vokabel ausgegeben.
Ich habe gedacht es so zu lösen, aber es kommt nicht das raus, was ich möchte. :
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
final String vokabel = in.readLine(); System.out.println(vokabel); final String[] array = vokabel.split("\\."); jTextField1.setText(array[0]); jButton2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { int r = 0; int f = 0; if (jTextField2.getText().equals(array[1])) { r++; System.out.println(r); } String vokabel = null; try { vokabel = in.readLine(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(vokabel); String[] array = vokabel.split("\\."); jTextField1.setText(array[0]); jTextField2.setText(null); } });
PS: Das System.out.println() ist nur zur überprüfung gedacht.
-
07.09.10 16:33 #23
Die Variablen r und f solltest du außerhalb der actionPerformed-Methode deklarieren. Im Moment werden die beiden Variablen immer wieder neu deklariert und immer wieder mit 0 initialisiert. Hier kommen also Themen wie Sichtbarkeit und Lebenszeit/-zyklus von Variablen vor.
Man sagt, das Schwert eines Samurai sei seine Seele ...
Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.
Das Schmieden ist eine Kunst; Das Schreiben auch ;)
-
Also wenn ich das so mache, wird r auch nicht erhöht. Die Ausgabe ist
hund.dog
1
Katze.cat
1
Maus.mouse
1
null
-
07.09.10 16:58 #25
Wo packst du die Variablen denn hin? Zeig mal den Code.
Man sagt, das Schwert eines Samurai sei seine Seele ...
Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.
Das Schmieden ist eine Kunst; Das Schreiben auch ;)
-
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
import java.awt.*; import java.awt.event.*; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.Charset; import java.util.Arrays; import javax.swing.*; import javax.swing.event.*; /** * * Beschreibung * * @version 1.0 vom 06.09.2010 * @author */ public class Vokabeltrainer extends JFrame { // Anfang Attribute private JTextField jTextField1 = new JTextField(); private JTextField jTextField2 = new JTextField(); private JButton jButton1 = new JButton(); private JButton jButton2 = new JButton(); private JLabel jLabel1 = new JLabel(); private JLabel jLabel2 = new JLabel(); int r = 0; int f = 0; public String[] array; public String vokabel; // Ende Attribute public Vokabeltrainer(String title) throws Exception { // Frame-Initialisierung super(title); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); int frameWidth = 580; int frameHeight = 327; 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); Container cp = getContentPane(); cp.setLayout(null); // Anfang Komponenten final BufferedReader in = new BufferedReader( new InputStreamReader( new FileInputStream( new File( "C:\\Users\\Yanik\\workspace\\Vokabeltrainer\\src\\Vokabeln.txt")), // Charset.forName("ISO-8859-1"))); Charset.forName("UTF-8"))); jTextField1.setBounds(200, 64, 361, 24); jTextField1.setText(""); cp.add(jTextField1); jTextField2.setBounds(200, 112, 361, 24); jTextField2.setText(""); cp.add(jTextField2); jButton1.setBounds(416, 240, 145, 49); jButton1.setText("Abbrechen"); jButton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jButton1_ActionPerformed(evt); } }); cp.add(jButton1); jButton2.setBounds(256, 240, 145, 49); jButton2.setText("Weiter"); vokabel = in.readLine(); System.out.println(vokabel); array = vokabel.split("\\."); jTextField1.setText(array[0]); jButton2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { if (jTextField2.getText().equals(array[1])) { r++; System.out.println("Hallo"); } System.out.println(r); try { vokabel = in.readLine(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(vokabel); jTextField1.setText(array[0]); jTextField2.setText(null); } }); cp.add(jButton2); jLabel1.setBounds(24, 64, 149, 24); jLabel1.setText("Deutschvokabel"); jLabel1.setFont(new Font("MS Sans Serif", Font.BOLD, 17)); cp.add(jLabel1); jLabel2.setBounds(24, 112, 154, 24); jLabel2.setText("Englischvokabel"); jLabel2.setFont(new Font("MS Sans Serif", Font.BOLD, 17)); cp.add(jLabel2); // Ende Komponenten setResizable(false); setVisible(true); } // Anfang Methoden public void jButton1_ActionPerformed(ActionEvent evt) { System.exit(0); } public void jButton2_ActionPerformed(ActionEvent evt) throws Exception { } // Ende Methoden public static void main(String[] args) throws Exception { new Vokabeltrainer("Vokabeltrainer"); } }Geändert von yax (07.09.10 um 17:12 Uhr) Grund: Code geändert
-
07.09.10 17:26 #27
Und du bist dir sicher, dass die Ausgabe immer noch falsch ist? Eigentlich sollte das passen.
Man sagt, das Schwert eines Samurai sei seine Seele ...
Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.
Das Schmieden ist eine Kunst; Das Schreiben auch ;)
-
Ja, also r wird nur einmal erhöht, und dann nicht mehr
-
So, ich habs endlich geschafft.
Danke für die Hilfe, malwieder
-
07.09.10 18:13 #30
Also das Erhöhen von r funktioniert bei mir, was aber nicht funktioniert ist das mit den Vokabeln. Es bleibt immer die erste Vokabel drin stehn, was irgendwie sinnfrei ist.
Ich habe es jetzt mal etwas korrigiert, so dass das mit den Vokabeln klappt, der Stream sauber geschlossen wird und ich habe mir erlaubt deinen Code etwas umzuformatieren, damit man besser erkennt, was nun wo ist und was zusammengehört und was nicht. Dennoch muss an dem Code noch viel getan werden, denn er ist nicht sonderlich schön von der Struktur her, z.B. könnten ruhig mehr Methoden rein. Zum einen wird die Lesbarkeit erhöht, zum anderen ist der Code dann dynamischer und vor allem kommen dann Redundanzen nicht mehr vor, wie z.B.
Das kommt im Moment zwei mal vor, dafür wäre eine Methode wie setNextVocabular() oder sowas besserCode java:1 2 3
array = vokabel.split("\\."); jTextField1.setText(array[0]); jTextField2.setText(null);
Aber das wirste mit der Zeit noch selber hinbekommen, wenn du mehr Erfahrung hast.
Hier erstmal der neue Code, der soweit funktioniert, wie er soll.
PS: Wegen dem Package nicht wundern, hat organisatorische Gründe.Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
package de.tutorials.forum.hilfe.yax.vokabeltrainer; import java.awt.Container; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.Charset; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.WindowConstants; /** * Beschreibung * * @version 1.0 vom 06.09.2010 * @author */ public class Vokabeltrainer extends JFrame { private static final long serialVersionUID = 6156459486834845463L; public String[] array; private int f = 0; private BufferedReader in = null; private JButton jButton1 = new JButton(); private JButton jButton2 = new JButton(); private JLabel jLabel1 = new JLabel(); private JLabel jLabel2 = new JLabel(); private JTextField jTextField1 = new JTextField(); private JTextField jTextField2 = new JTextField(); private int r = 0; public String vokabel; public static void main(String[] args) throws Exception { new Vokabeltrainer("Vokabeltrainer"); } public Vokabeltrainer(String title) throws Exception { // Frame-Initialisierung super(title); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); Container cp = getContentPane(); cp.setLayout(null); // Anfang Komponenten // Testfelder jTextField1.setBounds(200, 64, 361, 24); jTextField1.setText(""); cp.add(jTextField1); jTextField2.setBounds(200, 112, 361, 24); jTextField2.setText(""); cp.add(jTextField2); // Buttons jButton1.setBounds(416, 240, 145, 49); jButton1.setText("Abbrechen"); jButton1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent evt) { jButton1_ActionPerformed(evt); } }); cp.add(jButton1); jButton2.setBounds(256, 240, 145, 49); jButton2.setText("Weiter"); jButton2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent evt) { if(jTextField2.getText().equals(array[1])) { r++; System.out.println("Hallo"); } System.out.println(r); try { vokabel = in.readLine(); } catch(IOException e) { e.printStackTrace(); } System.out.println(vokabel); if(vokabel != null) { array = vokabel.split("\\."); jTextField1.setText(array[0]); jTextField2.setText(null); } } }); cp.add(jButton2); // Labels jLabel1.setBounds(24, 64, 149, 24); jLabel1.setText("Deutschvokabel"); jLabel1.setFont(new Font("MS Sans Serif", Font.BOLD, 17)); cp.add(jLabel1); jLabel2.setBounds(24, 112, 154, 24); jLabel2.setText("Englischvokabel"); jLabel2.setFont(new Font("MS Sans Serif", Font.BOLD, 17)); cp.add(jLabel2); // Ende Komponenten // Stream zur Vokabeldatei herstellen und dafür sorgen, dass beim // Programmende (bzw. beim Beenden der JVM) der Stream wieder sauber // geschlossen wird in = new BufferedReader(new InputStreamReader(new FileInputStream( new File("vokabeln.txt")), Charset.forName("UTF-8"))); Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { if(in != null) { try { in.close(); } catch(IOException e) { e.printStackTrace(); } } } }); // Vokabeln auslesen und erste Vokabel abfragen vokabel = in.readLine(); System.out.println(vokabel); array = vokabel.split("\\."); jTextField1.setText(array[0]); // Fenstergröße zuweisen, mittig positionieren und sichtbar machen setSize(580, 327); setResizable(false); setLocationRelativeTo(null); setVisible(true); } // Anfang Methoden public void jButton1_ActionPerformed(ActionEvent evt) { System.exit(0); } public void jButton2_ActionPerformed(ActionEvent evt) throws Exception { } // Ende Methoden }
Geändert von Akeshihiro (07.09.10 um 18:15 Uhr)
Man sagt, das Schwert eines Samurai sei seine Seele ...
Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.
Das Schmieden ist eine Kunst; Das Schreiben auch ;)
Ähnliche Themen
-
split-problem
Von newcode im Forum .NET Windows FormsAntworten: 5Letzter Beitrag: 18.01.09, 16:21 -
Problem mit split()
Von Kahmoon im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 08.03.07, 13:10 -
Problem mit split() und regex
Von verena4 im Forum JavaAntworten: 4Letzter Beitrag: 21.10.06, 17:18 -
Problem mit der Größe von split pane
Von Vierie im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 29.07.06, 15:44 -
[MX 2004] Problem mit string.split
Von luke_the_duke im Forum Flash PlattformAntworten: 1Letzter Beitrag: 20.01.05, 14:48





Zitieren

Login





