Warum wird meine Variable nicht erkannt?

varox

Neues Mitglied
Hallo zusammen, Bin totaler Anfäger und ich weiss einfach nicht wie ich dieses Problem lösen soll.

Ich möchte ein Programm, welches ein JFrame mit einem Texteingabefeld und einem Button (OK) erzeugt. Wenn man dann Text eingibt und danach auf "OK" drückt, sollte der Eingegebene Text in eine .txt-Datei geschrieben werden. Es gibt für jeden Wochentag eine .txt-Datei. Der eingegebene Text sollte immer in die .txt-Datei des aktuellen Tages geschrieben werden. (Vermerk)

Ist dafür gedacht, dass man dann sozusagen Notizen für jeden Wochentag in einer separaten Textdatei speichern kann.

Alles, bis auf den String "textEingabe" in Zeile 42 funktioniert. Diesen String kann ich anscheinend nur lokal (In der Methode/Klasse wo er initialisiert wird) benutzen. Denn dort (in Zeile 42) heisst es dass dieser String nicht verwendet wird. Jedoch wird er aber in der Methode textSpeichern() verwendet. Wo muss ich den String initialisieren? Wie kann ich dann darauf aus jeder Methode zugreifen? Sieht jemand eine Lösung?

Vielen Dank im Voraus.

PS.: Sorry für den ziemlich "unsauberen" Code. War mit den Nerven durch und habe nur noch rumprobiert und nicht mehr darauf geachtet. Ich hoffe man kann ihn trotzdem gut entziffern.
Könnte man den evtl. auch noch besser/kürzer schreiben?


Java:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.script.ScriptException;
import javax.swing.AbstractButton;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class aktuellerTag {

	public static void main(String args[]) throws ScriptException 
	{
        
		mainJFrame();
    }

	public static void mainJFrame() 
	{

		JFrame mainFrame = new JFrame("BBloger");
		JButton button = new JButton("OK");
		final JTextField textFeld1 = new JTextField();

		// ActionListener
		ActionListener actionListener = new ActionListener() 
		{
			

			public void actionPerformed(ActionEvent actionEvent) 
			{
				System.out.println("Vermerk wurde gespeichert.");
				textEingabe = textFeld1.getText();
				tagVergleich();
		}
		    };

		button.addActionListener(actionListener);

		mainFrame.add(textFeld1);
		mainFrame.add(button, BorderLayout.SOUTH);
		mainFrame.setSize(200, 200);
		mainFrame.pack();
		mainFrame.setVisible(true);

		return;

	}

	public static void textSpeichern() 
	{
		
		String textEingabe = new String();
		Date datumAktuell = new Date();
		DateFormat ft = new SimpleDateFormat("EEEE");
		String aktuellerTag = ft.format(datumAktuell);
		if ((aktuellerTag.equals("Sonntag"))) {
			Writer vermerk = null;
			try {
				vermerk = new FileWriter("vermerkSO.txt");
				vermerk.write(textEingabe);
				vermerk.append(System.getProperty("line.separator")); // e.g.
																		// "\n"
			} catch (IOException e) {
				System.err.println("Konnte Datei nicht erstellen");
			} finally {
				if (vermerk != null)
					try {
						vermerk.close();
					} catch (IOException e) {
					}
			}
		} else if ((aktuellerTag.equals("Montag"))) {
			Writer vermerk = null;
			try {
				vermerk = new FileWriter("vermerkMO.txt");
				vermerk.write(textEingabe);
				vermerk.append(System.getProperty("line.separator")); // e.g.
																		// "\n"
			} catch (IOException e) {
				System.err.println("Konnte Datei nicht erstellen");
			} finally {
				if (vermerk != null)
					try {
						vermerk.close();
					} catch (IOException e) {
					}
			}
		} else if ((aktuellerTag.equals("Dienstag"))) {
			Writer vermerk = null;
			try {
				vermerk = new FileWriter("vermerkDI.txt");
				vermerk.write(textEingabe);
				vermerk.append(System.getProperty("line.separator")); // e.g.
																		// "\n"
			} catch (IOException e) {
				System.err.println("Konnte Datei nicht erstellen");
			} finally {
				if (vermerk != null)
					try {
						vermerk.close();
					} catch (IOException e) {
					}
			}
		} else if ((aktuellerTag.equals("Mittwoch"))) {
			Writer vermerk = null;
			try {
				vermerk = new FileWriter("vermerkMI.txt");
				vermerk.write(textEingabe);
				vermerk.append(System.getProperty("line.separator")); // e.g.
																		// "\n"
			} catch (IOException e) {
				System.err.println("Konnte Datei nicht erstellen");
			} finally {
				if (vermerk != null)
					try {
						vermerk.close();
					} catch (IOException e) {
					}
			}
		} else if ((aktuellerTag.equals("Donnerstag"))) {
			Writer vermerk = null;
			try {
				vermerk = new FileWriter("vermerkDO.txt");
				vermerk.write(textEingabe);
				vermerk.append(System.getProperty("line.separator")); // e.g.
																		// "\n"
			} catch (IOException e) {
				System.err.println("Konnte Datei nicht erstellen");
			} finally {
				if (vermerk != null)
					try {
						vermerk.close();
					} catch (IOException e) {
					}
			}
		} else if ((aktuellerTag.equals("Freitag"))) {
			Writer vermerk = null;
			try {
				vermerk = new FileWriter("vermerkFR.txt");
				vermerk.write(textEingabe);
				vermerk.append(System.getProperty("line.separator")); // e.g.
																		// "\n"
			} catch (IOException e) {
				System.err.println("Konnte Datei nicht erstellen");
			} finally {
				if (vermerk != null)
					try {
						vermerk.close();
					} catch (IOException e) {
					}
			}
		} else if ((aktuellerTag.equals("Samstag"))) {
			Writer vermerk = null;
			try {
				vermerk = new FileWriter("vermerkSA.txt");
				vermerk.write(textEingabe);
				vermerk.append(System.getProperty("line.separator")); // e.g.
																		// "\n"
			} catch (IOException e) {
				System.err.println("Konnte Datei nicht erstellen");
			} finally {
				if (vermerk != null)
					try {
						vermerk.close();
					} catch (IOException e) {
					}
			}
		}
	}
}
 
Zuletzt bearbeitet:
Du deklarierst die Variable Objektglobal. Also ganz oben direkt unter public class...

Ja den kann man noch stark kürzen und vereinfachen. Um solche Konstrukte, wie deine if else Schlange zu vermeiden, gibt es Enumerationen oder auch Enums. Google mal danach. Dann kann man die if else Schlange durch switch cases ersetzen (--> Google), was den Code schon mal schöner machte. Dann hast du eine hohe Redundanz in jeder Bedingung. Die kann man noch in Methoden auslagern. Dazu gibt es sie. 😉
 
Noch jemand ausser mir der zu solch später/früher Stunde noch wach ist? ^^
Danke für die rasche und sehr hilfreiche Antwort. Werde mich mal ein bisschen darüber informieren.
Naja, aller Anfang ist schwer 🙂

Edit: Es geht! Endlich! Nach 4 Stunden. static String in der obersten Klasse wars. ;-)
Werde den Code aber trotzdem nochmal überarbeiten.
Vielen Dank nochmal. 🙂
 
Zuletzt bearbeitet:

Zurück
Oben