Ich habe mir eine Formel rausgesucht, mit der ich genau ausrechnen kann, welcher Wochentag an einem bestimmten Datum war. So das habe ich nun versucht in ein Fenster zu packen. Alles wunderbar. Er zeigt mir das Fenster an und ich kann auch die Zahlen eingeben, aber er rechnet mir das nicht aus. Also er zeigt es mir nicht an. Könnt ihr mir vielleicht dabei weiterhelfen?
Hallo,
Ich habe mir eine Formel rausgesucht, mit der ich genau
ausrechnen kann, welcher Wochentag an einem bestimmten Datum
war.
Das geht auch ohne Formel mit der Klasse GregorianCalendar (http://java.sun.com/javase/6/docs/api/java/util/Greg…)
So das habe ich nun versucht in ein Fenster zu packen.
Alles wunderbar. Er zeigt mir das Fenster an und ich kann auch
die Zahlen eingeben, aber er rechnet mir das nicht aus. Also
er zeigt es mir nicht an. Könnt ihr mir vielleicht dabei
weiterhelfen?
Wir sind keine Hellseher, ohne Sourcecode wird dir wohl keiner weiterhelfen können.
Gruß
Heavy
Hallo Kronos 456,
eigentlich ganz einfach.
Schicke dir einfach mal einen kleinen Codeschnipsel, da du ja selber keinen Code angegeben hast:
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Locale;
public class Main {
public static void main(String args[])
{
DateFormat d = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.GERMANY);
GregorianCalendar datum = new GregorianCalendar();
int tag;
String[] wochentagNamen = { „SONNTAG“, „MONTAG“, „DIENSTAG“, „MITTWOCH“,
„DONNERSTAG“, „FREITAG“, „SAMSTAG“ };
System.out.println();
if (args.length != 1) {
System.out.println(" Aufruf: Main ");
System.exit(0);
}
try {
datum.setTime(d.parse(args[0]));
tag = datum.get(Calendar.DAY_OF_WEEK);
System.console().printf(" Wochentag: %s\n", wochentagNamen[day-1]);
} catch(ParseException e) {
System.err.println("\n Kein gueltiges Datum (TT.MM.JJJJ)");
}
}
}
Viele Grüße und hoffentlich viel Erfolg
Ja tut mir leid, ich hab den Code ganz vergessen ^^ Tut mir echt Leid
Ich hab hier aber nur den MyActionListener. Der Rest muss ja stimmen.
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import javax.swing.*;
import javax.swing.event.*;
public class MyActionListener implements ActionListener {
public JOptionPane Hilfe = new JOptionPane("");
public Wochentagsberechnung1 f;
public MyActionListener(Wochentagsberechnung1 f) {
this.f = f;
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == f.Beenden) {
System.exit(0);
}
double t = 0;
double j = 0;
double m = 0;
try {
t = Double.parseDouble(f.TF_Tag.getText().replace(’,’, ‚.‘));
m = Double.parseDouble(f.TF_Monat.getText().replace(’,’, ‚.‘));
j = Double.parseDouble(f.TF_Jahr.getText().replace(’,’, ‚.‘));
if (e.getSource() == f.Berechnen) {
double m2;
double j2 = j;
if (m
Ja tut mir leid, ich hab den Code ganz vergessen ^^ Tut mir
echt LeidIch hab hier aber nur den MyActionListener. Der Rest muss ja
stimmen.import java.awt.*;
import java.awt.event.*;import java.text.*;
import javax.swing.*;
import javax.swing.event.*;public class MyActionListener implements ActionListener {
public JOptionPane Hilfe = new JOptionPane("");
public Wochentagsberechnung1 f;
Instanzvariablen sollten immer private sein. Instanzvariablen werden nicht groß geschrieben. Also aus „Hilfe“ wird „hilfe“
public MyActionListener(Wochentagsberechnung1 f) {
this.f = f;
}
Dependency Injection (DI) gute Idee, wobei mir hier noch nicht ganz klar wird warum? da du es an keiner Stelle wirklich brauchst
public void actionPerformed(ActionEvent e) {
if (e.getSource() == f.Beenden) {
was ist das?!? hast du die Instanzvariablen etwa public ? Ist keine gute Idee. Ich denke mal das sich dahinter ein JButton oder so versteckt. das Problem ist mit == vergleichst du zwei Instanzen und hier kann es zu Fehlern kommen, wenn die Referenzen nicht stimmen.
Der bessere Weg ist setze am JButton das Attribut ActionCommand und werte das aus.
if(e.getActionCommand().equals("ende"))
System.exit(0);
}double t = 0;
double j = 0;
double m = 0;try {
t = Double.parseDouble(f.TF_Tag.getText().replace(’,’,
‚.‘));
m = Double.parseDouble(f.TF_Monat.getText().replace(’,’,
‚.‘));
j = Double.parseDouble(f.TF_Jahr.getText().replace(’,’,
‚.‘));if (e.getSource() == f.Berechnen) {
Siehe Kommentar beim beenden, denn hier ist es das Gleiche (ActionCommand usw.)
double m2;
double j2 = j;if (m JOptionPane.showMessageDialog(null, "Sonntag, " + t + …
Dementsprechend ist auch die Instanzvariable Hilfe überflüssig
if (h == 0) {
Hilfe.showMessageDialog(null, "Sonntag, " + t + „.“
- m + „.“ + j);
}if (h == 1) {
Hilfe.showMessageDialog(null, "Montag, " + t + „.“ +
m + „.“ + j);
}if (h == 2) {
Hilfe.showMessageDialog(null, "Dienstag, " + t + „.“
- m + „.“ + j);
}if (h == 3) {
Hilfe.showMessageDialog(null, "Mittwoch, " + t + „.“
- m + „.“ + j);
}if (h == 4) {
Hilfe.showMessageDialog(null, "Donnerstag, " + t +
„.“ + m + „.“ + j);
}if (h == 5) {
Hilfe.showMessageDialog(null, "Freitag, " + t + „.“
- m + „.“ + j);
}if (h == 6) {
Hilfe.showMessageDialog(null, "Samstag, " + t + „.“
- m + „.“ + j);
}
}
}
catch (NumberFormatException error) {
f.Datum.setText(„Fehler bei Eingabefeld…“);
Hier wieder die Sache mit den public Instanzvariablen… benutze Getter/Setter Methoden
} // catch(NumberFormatException error)
}
}
double t = 0;
double j = 0;
double m = 0;try {
t = Double.parseDouble(f.TF_Tag.getText().replace(’,’,
‚.‘));
m = Double.parseDouble(f.TF_Monat.getText().replace(’,’,
‚.‘));
j = Double.parseDouble(f.TF_Jahr.getText().replace(’,’,
‚.‘));
Hier zum einen die Sache wieder mit den public Instanzvariablen zum anderen, benutze doch sprechende Variablennamen ich denke für jeden Leser und für dich auch…
„t“ ist nicht so intuitiv wie „tag“ oder „f“ => „fenster“, „m“ => „monat“…naja usw.
Double.parseDouble(f.TF\_Tag.getText().replace(',','.'));
Warum zum einen das Replace des Kommas?!? willst du halbe Tage, Monate oder Jahre eingeben *grins*
Du hast eine „catch“ Anweisung lass dir mal den Inhalt ausgeben, ich denke das du eine NumberFormatException oder eine NullPointerException hast.
try
{
//hier dein Code
}
catch(Exception error)
{
error.printStackTrace();
}
Wenn du den Fehler lokalisiert hast, kannst du die catch wieder in ihrem Urzustand bringen…
Ah sehr geil. Dankeschön euch beiden. Ihr habt mir sehr geholfen
Zu den Fragen, was das sollte, ich hab das so in der Schule gelernt. Also hab ich das erstmal so beibehalten, damit ich nich durcheinanderkomme. Ich weiss es gibt vielleicht einfachere Wege. Aber das ist für mich der einfachste.
Trotzdem danke nochmal an euch beide.
MfG
Kronos