Problem beim Wochenplan (Datum,Wochentag)

robotic

Mitglied
Hallo zusammen,
erst einmal möchte ich sagen, dass das mein erster Post hier ist und ich noch ein Anfänger bin was Programmieren angeht. Seit einigen wochen sitze ich nun an meinem Programm und komme mit kleinen Schritten voran :)

Nun hänge ich an einer Stelle fest. Ich möchte gerne die Tage (mit Datum) für jeweils eine Woche anzeigen lassen.
In etwa so:
Montag
2015-10-5

Dienstag
2015-10-6
bis
Sonntag
2015-10-11

Der wichtige Punkt für mich ist jetzt, die Tage der aktuellen Woche sollen solange angezeigt werden bis die nächste Woche startet, sprich jeden Montag um 0:00 Uhr.

Was ich probiert habe bis jetzt, ist die LocalDate funktion:
Code:
LocalDate Monday = ldt.with(TemporalAdjusters.nextOrSame(DayOfWeek.MONDAY));
    LocalDate Tuesday = ldt.with(TemporalAdjusters.nextOrSame(DayOfWeek.TUESDAY));
    LocalDate Wednesday = ldt.with(TemporalAdjusters.nextOrSame(DayOfWeek.WEDNESDAY));
    LocalDate Thursday = ldt.with(TemporalAdjusters.nextOrSame(DayOfWeek.THURSDAY));
    LocalDate Friday = ldt.with(TemporalAdjusters.nextOrSame(DayOfWeek.FRIDAY));
   
    System.out.println(Monday + "\n" + Tuesday + "\n" + Wednesday + "\n" + Thursday + "\n" + Friday);

Hier habe ich allerdings das Problem das wenn ein Tag vorbei ist z.B. der Montag er mir bereits den Montag für die nächste Woche anzeigt. Dies soll er aber erst tun wenn die Woche vorbei ist.

Ich hoffe ich konnte mein Problem richtig schildern :(
Für erfahrene Programmierer ist das bestimmt ziemlich einfach...
Über Lösungsvorschläge freue ich mich sehr.

MfG
 
Zuletzt bearbeitet:

Joose

Top Contributor
Es gibt auch die Alternative "previousOrSame" statt "nextOrSame".
Dann musst du nur noch rausfinden welche Tage sind bisher vergangen und für diese führst du dann eben "previousOrSame" statt "nextOrSame" aus.
 

robotic

Mitglied
Hey danke erstmal für deine Antwort.
Ich verstehe nich genau in wie weit mir "previousOrSame" bei meinem Problem weiter hilft.

Ich möchte alle Tage der aktuellen Woche (also KW41 vom 5.10 bis 11.10) angezeigt bekommen bis die neue Woche beginnt.
Am Montag (12.10) sollen dann alle Tage der nächsten Woche (also KW42 vom 12.10 bis 18.10) angezeigt werden.
Und immer so weiter.
 

Joose

Top Contributor
Ich möchte alle Tage der aktuellen Woche (also KW41 vom 5.10 bis 11.10) angezeigt bekommen bis die neue Woche beginnt.
Am Montag (12.10) sollen dann alle Tage der nächsten Woche (also KW42 vom 12.10 bis 18.10) angezeigt werden.
Und immer so weiter.

Was du erreichen willst habe ich schon verstanden. Und auch dein Problem habe ich verstanden: Wenn nun Montag der 12.10 vorbei ist bekommst du mit "nextOrSame" eben nicht mehr den 12.10 angezeigt sondern schon den 19.10. oder?

Ich verstehe nich genau in wie weit mir "previousOrSame" bei meinem Problem weiter hilft.

Dein Problem ist das er immer den aktuellen Tag (heutigen) oder den nächsten Tag nimmt welcher dem übergebenen Wochentag entspricht. Wenn nun aber ein Wochentag vorbei ist willst du eben den vorherigen der dem übergebenen Wochentag entspricht.

Du musst kontrollieren, ob der Tag X schon vorbei ist, wenn ja dann holst du dir mit "previousOrSame" den Tag der aktuellen Kalendarwoche. Ist der Tag noch nicht vorbei kannst du dir "nextOrSame" die anderen Tage der Kalendarwoche holen.
 

Joose

Top Contributor
Eine ganz andere Variante wäre folgende:

Frage das aktuelle Datum und dessen Wochentag ab. Um nun auf die anderen Wochentage zu kommen muss du jeweils nur X Tage subtrahieren bzw. addieren.
 

robotic

Mitglied
Wenn nun Montag der 12.10 vorbei ist bekommst du mit "nextOrSame" eben nicht mehr den 12.10 angezeigt sondern schon den 19.10. oder?
Richtig.

Du musst kontrollieren, ob der Tag X schon vorbei ist, wenn ja dann holst du dir mit "previousOrSame" den Tag der aktuellen Kalendarwoche. Ist der Tag noch nicht vorbei kannst du dir "nextOrSame" die anderen Tage der Kalendarwoche holen.
klingt verwirrend^^ aber ich werde mir hierzu gedanken machen und es mal versuchen...

Frage das aktuelle Datum und dessen Wochentag ab. Um nun auf die anderen Wochentage zu kommen muss du jeweils nur X Tage subtrahieren bzw. addieren.
Hmm würde hier aber nicht die Ausgabe jedesmal verrutschen?
Also wenn "heute" Montag ist dann klappt es:
1. Montag(heute) 2.Diensatg...7.Sonntag

Wenn aber "heute" Dienstag ist:
1.Dienstag(heute) 2.Mittwoch...7.Montag
 

Joose

Top Contributor
klingt verwirrend^^ aber ich werde mir hierzu gedanken machen und es mal versuchen...

Du musst in deinem Programm ja irgendwie das aktuelle Tagesdatum bekommen. Von diesem Tagesdatum kannst du auch den Wochentag bekommen.
Jedes Datum vor dem aktuellen Datum kann mittels Methode "previousOrSame" gefunden werden. Jedes Datum nach dem aktuellen Datum kann mittels Methode "nextOrSame" gefunden werden.

Hmm würde hier aber nicht die Ausgabe jedesmal verrutschen?
Also wenn "heute" Montag ist dann klappt es:
1. Montag(heute) 2.Diensatg...7.Sonntag

Wenn aber "heute" Dienstag ist:
1.Dienstag(heute) 2.Mittwoch...7.Montag

Wie schon gesagt addieren oder aber subtrahieren.
Wenn heute Dienstag ist, dann musst du für Montag -1 rechnen (oder aber +(-1) ;))

Du musst natürlich schauen das die richtige Reihenfolge eingehalten wird.

Variante 3 (ist mir gerade wieder eingefallen):
Vom aktuellen Datum rechnest du auf den letzten Montag zurück (falls das aktuelle Datum schon Montag ist braucht man hier nichts machen) und von Montag aus kann man sich den Rest der Woche ausrechnen.

Wie du siehst gibt es mehrere Möglichkeiten an die Tage einer Woche zu kommen.
Welche Variante du nun wählst hängt nur von dir ab und deinem Code.
 

robotic

Mitglied
Hallo,
dank dir habe ich es jetzt hinbekommen.
Hier der Quelltext:
Java:
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjuster;
import java.time.temporal.TemporalAdjusters;


public class homedate {
    public static void main(String[] args) {

  
    LocalDate today = LocalDate.now();
    //System.out.println(today);
      
    LocalDate date = LocalDate.of(2015, 10, 16);
    //System.out.println(weekday.getDayOfWeek());
   
    DayOfWeek weekday = date.getDayOfWeek();
     // System.out.println(xoxo);
    //String s= xoxo.toString();
   
  switch (weekday.toString()){
      case "MONDAY":
        
         LocalDate mon = date;
         LocalDate tue = date.plusDays(1);
         LocalDate wed = date.plusDays(2);
         LocalDate thu = date.plusDays(3);
         LocalDate fri = date.plusDays(4);
         System.out.println("case 1");
         System.out.println(mon);
         System.out.println(tue);
         System.out.println(wed);
         System.out.println(thu);
         System.out.println(fri);
       
          break;
   
      case "TUESDAY":
        
         LocalDate mon2 = date.minusDays(1);
          LocalDate tue2 = date;
          LocalDate wed2 = date.plusDays(1);
          LocalDate thu2 = date.plusDays(2);
          LocalDate fri2 = date.plusDays(3);
          System.out.println("case 2");
          System.out.println(mon2);
          System.out.println(tue2);
          System.out.println(wed2);
          System.out.println(thu2);
          System.out.println(fri2);
            break;
         
        
      case "WEDNESDAY":
        
         LocalDate mon3 = date.minusDays(2);
          LocalDate tue3 = date.minusDays(1);
          LocalDate wed3 = date;
          LocalDate thu3 = date.plusDays(1);
          LocalDate fri3 = date.plusDays(2);
          System.out.println("case 3");
          System.out.println(mon3);
          System.out.println(tue3);
          System.out.println(wed3);
          System.out.println(thu3);
          System.out.println(fri3);
           break;
        
      case "THURSDAY":
        
         LocalDate mon4 = date.minusDays(3);
          LocalDate tue4 = date.minusDays(2);
          LocalDate wed4 = date.minusDays(1);
          LocalDate thu4 = date;
          LocalDate fri4 = date.plusDays(1);
          System.out.println("case 4");
          System.out.println(mon4);
          System.out.println(tue4);
          System.out.println(wed4);
          System.out.println(thu4);
          System.out.println(fri4);
           break;
         
      case "FRIDAY":
       
         LocalDate mon5 = date.minusDays(4);
          LocalDate tue5 = date.minusDays(3);
          LocalDate wed5 = date.minusDays(2);
          LocalDate thu5 = date.minusDays(1);
          LocalDate fri5 = date;
          System.out.println("case 5");
          System.out.println(mon5);
          System.out.println(tue5);
          System.out.println(wed5);
          System.out.println(thu5);
          System.out.println(fri5);
           break;
         
            }
      }}
 
Zuletzt bearbeitet von einem Moderator:

robotic

Mitglied
So nun wo ich das jetzt habe, wollte ich gerne noch etwas wissen.
Ich habe eine Datenbank wo ich 5 querys habe.
Dabei soll mir die,
1.Query alle Informationen für den Montag
2.Query alle Informationen für den Dienstag
usw. Ausgeben.

Bis jetzt musste ich immer das Datum selbst eintragen so wie hier:
ResultSet montag = myStmnt.executeQuery("select * from gericht where date_start='2015-10-05'");
ResultSet dienstag = myStmnt.executeQuery("select * from gericht where date_start='2015-10-06'");
ResultSet mittwoch = myStmnt.executeQuery("select * from gericht where date_start='2015-10-07'");
ResultSet donnerstag = myStmnt.executeQuery("select * from gericht where date_start='2015-10-08");
ResultSet freitag = myStmnt.executeQuery("select * from gericht where date_start='2015-10-9'");

Kann ich dem jetzt irgendwie sagen, das er sich das jeweilige Datum aus der Ausgabe meines Programms nehmen soll?
 

Joose

Top Contributor
Schaut gut aus. Hab mir deinen Code zur Hand genommen und ihn etwas optimiert ;)
Hinweis: Du hast bei dir viel doppelten Code durch die Ausgabe in jedem switch Zweig.

Java:
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjuster;
import java.time.temporal.TemporalAdjusters;

public class Homedate {
   public static void main(String[] args) {
     LocalDate today = LocalDate.now();

     LocalDate[] weekdays = getWeekdays(today);
    
     System.out.println(weekdays[0]);
     System.out.println(weekdays[1]);
     System.out.println(weekdays[2]);
     System.out.println(weekdays[3]);
     System.out.println(weekdays[4]);
   }
  
   public static LocalDate[] getWeekdays(LocalDate date) {
     LocalDate monday = date;
     if(date.getDayOfWeek() > 1) {
       monday = date.minusDays(date.getDayOfWeek() - 1);
     }
     LocalDate[] weekdays = new LocalDate[5];
     weekdays[0] = monday;
     for(int i = 1; i <= 4; i++) {
       weekdays[i] = monday.plusDays(i);
     }
   }
}

Anmerkung: Hab den Code aber nicht getestet.

Java:
ResultSet montag = myStmnt.executeQuery("select * from gericht where date_start='" + deineVariableMitdemDatumVonMontag  + "'");
......

So würde das theoretisch gehen. Aber Achtung man sollte immer PreparedStatement verwenden statt selber zusammen gestückelten SQLs
Java:
String gerichtQuery = "select * from gericht where date_start=?;";
PreparedStatement gerichtStatement = con.prepareStatement(gerichtQuery);
gerichtStatement .setDate(1, [DEINE_DATUM_VARIABLE]);

ResultSet gerichtTag = gerichtStatement.execute();

Ich glaube du hast in deinem Code viele Sachen doppelt - fünfach drinnen um etwas für jeden Tag zu machen. Probier das zu vereinfachen, dadurch wird der Code übersichtlicher, kürzer und leichter anzupassen
 

robotic

Mitglied
Schaut gut aus. Hab mir deinen Code zur Hand genommen und ihn etwas optimiert ;)
Hinweis: Du hast bei dir viel doppelten Code durch die Ausgabe in jedem switch Zweig.

Java:
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjuster;
import java.time.temporal.TemporalAdjusters;

public class Homedate {
   public static void main(String[] args) {
     LocalDate today = LocalDate.now();

     LocalDate[] weekdays = getWeekdays(today);
   
     System.out.println(weekdays[0]);
     System.out.println(weekdays[1]);
     System.out.println(weekdays[2]);
     System.out.println(weekdays[3]);
     System.out.println(weekdays[4]);
   }
 
   public static LocalDate[] getWeekdays(LocalDate date) {
     LocalDate monday = date;
     if(date.getDayOfWeek() > 1) {
       monday = date.minusDays(date.getDayOfWeek() - 1);
     }
     LocalDate[] weekdays = new LocalDate[5];
     weekdays[0] = monday;
     for(int i = 1; i <= 4; i++) {
       weekdays[i] = monday.plusDays(i);
     }
   }
}

Wow deine Lösung ist viel kürzer. Ich verstehe nicht mal genau was da passiert :D
Anmerkung: Hab den Code aber nicht getestet.

Funktioniert leider bei mir nicht. Er meckert bei den Operatoren "..>1" und "..-1".

Das Problem was ich bei der Datenbank Abfrage habe ist halt, dass er die Variablen innerhalb der cases nicht annimmt.
Naja ich werde erstmal weiter versuchen und schauen was "PreparedStatement" überhaupt ist. :)

Ich melde mich sobald ich was habe bzw. nicht weiter weiß.

Danke vielmals.
MfG
 

Joose

Top Contributor
Wow deine Lösung ist viel kürzer. Ich verstehe nicht mal genau was da passiert :D

Naja probiere es einfach mal per Stift+Papier logisch durchzugehen. Grob gesagt egal welches Datum du an die Methode übergibst, es wird immer der Montag davor gesucht (außer der Tag selber ist ein Montag). Und danach einfach immer Tage addiert um die restlichen Tage der Woche zu bekommen.

Funktioniert leider bei mir nicht. Er meckert bei den Operatoren "..>1" und "..-1".

Ja mein Fehler, nach dem Aufruf von "getWeekday()" muss man noch "getValue()" aufrufen.

Das Problem was ich bei der Datenbank Abfrage habe ist halt, dass er die Variablen innerhalb der cases nicht annimmt.

Ich würde zu diesem Problem generell ein neues Thema aufmachen, da es sich hierbei ja schon um etwas anderes handelt als die Wochentage zu einem bestimmten Wochentag zu bekommen.
 

robotic

Mitglied
Alles klar! Für die Datenbank-Problematik mache ich dann einen neuen thread auf.

Könntest du vielleicht deinen Quellcode noch überabrbeiten und hier mal posten?
Ich würde damit gerne etwas rumspielen, um es besser zu verstehen.
Wäre sehr nett.
 

Joose

Top Contributor
Java:
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjuster;
import java.time.temporal.TemporalAdjusters;

public class Homedate {
   public static void main(String[] args) {
     LocalDate today = LocalDate.now();

     LocalDate[] weekdays = getWeekdays(today);
  
     System.out.println(weekdays[0]);
     System.out.println(weekdays[1]);
     System.out.println(weekdays[2]);
     System.out.println(weekdays[3]);
     System.out.println(weekdays[4]);
   }

   public static LocalDate[] getWeekdays(LocalDate date) {
     LocalDate monday = date;
     if(date.getDayOfWeek().getValue() > 1) {
       monday = date.minusDays(date.getDayOfWeek().getValue() - 1);
     }
     LocalDate[] weekdays = new LocalDate[5];
     weekdays[0] = monday;
     for(int i = 1; i <= 4; i++) {
       weekdays[i] = monday.plusDays(i);
     }
     return weekdays;
   }
}

So sollte es funktionieren.
 
Zuletzt bearbeitet:

robotic

Mitglied
Vielen Dank für deine Mühe, weiß das echt zu schätzen.
Leider sagt er mir nun bei dieser Zeile ----> "public static LocalDate[] getWeekdays(LocalDate date)"; :

"Exception in thread "main" java.lang.Error: Unresolved compilation problem:
This method must return a result of type LocalDate[]"

Wenn du keine Lust mehr hast, kann ich das verstehen. Möchte dich nicht unnötig nerven :)

gruß
 

robotic

Mitglied
Vielen dank! Arbeite seit Gestern wieder weiter am Programm und ich habe versucht deinen Code bei mir einzufügen.
Ich wollte beide Klassen miteinander verbinden und habe dazu etwas im web gefunden. Leider funktioniert es nicht.
Er erkennt die Arrays nicht, also "weekdays[0]" und "weekdays[1]" in der query.
main:
Java:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import java.sql.*;
import java.time.LocalDate;

//import com.mysql.jdbc.PreparedStatement;

public class Speiseplan extends Application {
    @Override
    public void start(Stage stage)  throws Exception {    
            
                final TextArea ta1 = new TextArea();
                ta1.setPrefRowCount(5);
                ta1.setPrefColumnCount(10);
                ta1.setPrefWidth(250);
                ta1.setPrefHeight(100);
                ta1.setLayoutX(100);
                ta1.setLayoutY(50);
 
                final TextArea ta2 = new TextArea();
                ta2.setPrefRowCount(5);
                ta2.setPrefColumnCount(10);
                ta2.setPrefWidth(250);
                ta2.setPrefHeight(100);
                ta2.setLayoutX(400);
                ta2.setLayoutY(50);
 
                final TextArea ta3 = new TextArea();
                ta3.setPrefRowCount(5);
                ta3.setPrefColumnCount(10);
                ta3.setPrefWidth(250);
                ta3.setPrefHeight(100);
                ta3.setLayoutX(700);
                ta3.setLayoutY(50);
            
                final TextArea ta4 = new TextArea();
                ta1.setPrefRowCount(5);
                ta1.setPrefColumnCount(10);
                ta1.setPrefWidth(250);
                ta1.setPrefHeight(100);
                ta1.setLayoutX(100);
                ta1.setLayoutY(50);
 
                final TextArea ta5 = new TextArea();
                ta2.setPrefRowCount(5);
                ta2.setPrefColumnCount(10);
                ta2.setPrefWidth(250);
                ta2.setPrefHeight(100);
                ta2.setLayoutX(400);
                ta2.setLayoutY(50);
 
                final TextArea ta6 = new TextArea();
                ta3.setPrefRowCount(5);
                ta3.setPrefColumnCount(10);
                ta3.setPrefWidth(250);
                ta3.setPrefHeight(100);
                ta3.setLayoutX(700);
                ta3.setLayoutY(50);
         
               //LocalDate today = LocalDate.now();
                Wochentage wochenObjekt = new Wochentage();
                wochenObjekt.woche();
            
try {  
                 String url ="jdbc:mysql://localhost:3306/speiseplan";
                 String username ="root";
                 String password = "";
         
           
               Connection myConn = DriverManager.getConnection(url, username,password);
               Statement myStmnt = myConn.createStatement();
                
               ResultSet myRs = myStmnt.executeQuery("select * from gerichte where date= '" + weekdays[0].toString() + "'");
               while (myRs.next()){
         
                    String date = myRs.getString("date");
                    String name = myRs.getString("name");
                    String type = myRs.getString("type");
             
                    ta1.appendText(date + "\n");
                    ta2.appendText(name + "\n");
                    ta3.appendText(type + "\n");
                    }
       
               ResultSet myRs2 = myStmnt.executeQuery("select * from gerichte where date= '" + weekdays[1].toString() + "'");
               while (myRs2.next()){
               
                   String date = myRs2.getString("date");
                   String name = myRs2.getString("name");
                   String type = myRs2.getString("type");
            
                   ta4.appendText(date + "\n");
                   ta5.appendText(name + "\n");
                   ta6.appendText(type + "\n");
                   }
           
} catch (Exception e) {
          e.printStackTrace();
  }


                Pane pane = new Pane();
                Scene scene = new Scene(pane);
                pane.getChildren().addAll(ta1,ta2,ta3,ta4,ta5,ta6);
 
                stage.setWidth(1200);
                stage.setHeight(850);
                stage.setScene(scene);
                stage.setTitle("Termine");
                stage.show();
                stage.centerOnScreen();
}

    public static void main(String[] args) {
        launch(args);
    }
}
Ich habe diese Zeilen eingefügt und habe es eigntl. so gemacht wie beschrieben.
Java:
Wochentage wochenObjekt = new Wochentage();
          wochenObjekt.woche();


weekdays:
Java:
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjuster;
import java.time.temporal.TemporalAdjusters;

public class Wochentage {
   public void woche() {
     LocalDate today = LocalDate.now();

     LocalDate[] weekdays = getWeekdays(today);
     System.out.println(weekdays[0]);
     System.out.println(weekdays[1]);
     System.out.println(weekdays[2]);
     System.out.println(weekdays[3]);
     System.out.println(weekdays[4]);
   }

   public static LocalDate[] getWeekdays(LocalDate date) {
     LocalDate monday = date;
     if(date.getDayOfWeek().getValue() > 1) {
       monday = date.minusDays(date.getDayOfWeek().getValue() - 1);
     }
     LocalDate[] weekdays = new LocalDate[5];
     weekdays[0] = monday;
     for(int i = 1; i <= 4; i++) {
       weekdays[i] = monday.plusDays(i);
     }
     return weekdays;
   }
}
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
Zuerst mal ein kleiner Verbesserungsvorschlag zu der Erstellung deiner TextAreas ;) dadurch lassen sich änderungen einfacher durchführen und auch die Fehlersuche vereinfacht sich.
PS: bei dir dürfte sich ein Copy&Paste Fehler eingeschlichen haben deine TextAreas haben teilweise die gleichen LayoutX/Y Werte.

Java:
public static void createTextArea(int rowCount, int columnCount, int width, int height, int x, int y) {
   TextArea area = new TextArea();
   area.setPrefRowCount(rowCount);
   area.setPrefColumnCount(columnCount);
   area.setPrefWidth(width);
   area.setPrefHeight(height);
   area.setLayoutX(x);
   area.setLayoutY(y);
   return area;
}

final TextArea ta2 = createTextArea(5, 10, 250, 100, 400, 50);
final TextArea ta3 = createTextArea(5, 10, 250, 100, 700, 50);
final TextArea ta4 = createTextArea(5, 10, 250, 100, 100, 50);
final TextArea ta5 = createTextArea(5, 10, 250, 100, 400, 50);
final TextArea ta6 = createTextArea(5, 10, 250, 100, 700, 50);

Zu deinem Problem: Du erstellst ein LocalDate[], dieses ist aber nur in der Methode "woche" verfügbar. Da du diese Array nicht zurückgibst bzw. zwischenspeicherst wird es auch wieder aus dem Speicher entfernt sobald deine Methode fertig abgearbeitet wird. Hier eine mögliche Lösung:
Java:
LocalDate[] weekdays = Wochentage .getAktuelleWoche();
........
public static LocalDate[] getAktuelleWoche() {
   return getWoche(LocalDate.now());
}

public static LocalDate[] getWoche(LocalDate date) {
   return getWeekdays(date);
}

Einerseits würde ich das ganze statisch halten (damit erspart man sich die Objekterzeugung, welche hier nicht wirklich notwendig ist für die einfache Berechnung). Außerdem 2x Methoden anbieten um die aktuelle Woche oder eine nach Wunschdatum zu bekommen
 
Zuletzt bearbeitet:

robotic

Mitglied
Danke für deine Hilfe es hat wunderbar geklappt :D Wobei du jetzt schon wieder einen anderen Vorschlag hast mit 2x Methoden. Das hört sich sogar besser an, denn ich hatte eh vor irgendwann auch das Wunschdatum einzubauen.
Ich werde das auch gleich mal testen.

Nochmal zum "return", diese speichert also nur die Array ab ja?
Und wozu braucht man das get? Ist es notwendig, damit man die Variablen bzw. Array in einer anderen Klasse benutzen darf? Sorry, wenn die fragen zu doof sind. Ich bin noch ein richtiger Grünschnabel in java.
 

Joose

Top Contributor
In der Methode "getWeekdays" deiner Klasse Wochentage erzeugst du ein LocalDate-Array. Damit man damit etwas machen kann muss man dieses an den aufrufenden Code zurückgeben -> return.
"return" selbst gibt nur an: beende die Methode hier und liefere folgenden Wert zurück an den Aufrufer.

Von welchem "get" sprichst du? Wenn du "getAktuelleWoche" bzw. "getWoche" meinst: Das sind einfache Methode mit einem x beliebigen Namen. Theoretisch könntest du die beiden Methoden auch "hugo" und "fritz" nennen. Aber man sollte sich angewöhnen einen sinnvollen Namen zu wählen (am besten so das man am Namen erkennt was die Methode macht).
Normalerweise sollten Methoden welche mit "get...." Anfangen einen Wert zurückliefern.

Um Objekte welche in einer Klasse A (Methode Y) erzeugt werden in einer Klasse B zu verwenden musst du diese übergeben. Das kann man durch einen Methodenauruf realisieren.
Das gehört aber zu Grundlagen der OOP. Sollte dir da etwas unklar sein lies sie dir einfach nach.
 

JStein52

Top Contributor
Ich will ja kein Spielverderber sein, aber in seiner getWeekdays aus dem Post von 11:06 war doch ein return weekdays drin ??

Edit: ihr meint wahrscheinlich in seiner Methode woche() fehlt der return weekdays ??!!
 
Zuletzt bearbeitet:

robotic

Mitglied
Super, jetzt ist einiges klarer geworden. Danke

Also ich habe es nun mit den 2 Methoden probiert und es klappt auch soweit.
Java:
//import java.time.DayOfWeek;
//import java.time.temporal.TemporalAdjuster;
//import java.time.temporal.TemporalAdjusters;
import java.time.LocalDate;


public class Wochentage {
 
    public static LocalDate[] getAktuelleWoche() {
          return getWoche(LocalDate.now());
        }
 
    public static LocalDate[] getWoche(LocalDate date) {
           return getWeekdays(date);
        }
 
    public static LocalDate[] getWoche() {
    
   //LocalDate today = LocalDate.now();
     LocalDate today = LocalDate.of(2015, 10, 15);
  

     LocalDate[] weekdays = getWeekdays(today);
     System.out.println(weekdays[0]);
     System.out.println(weekdays[1]);
     System.out.println(weekdays[2]);
     System.out.println(weekdays[3]);
     System.out.println(weekdays[4]);
     return weekdays;
   }
 

   public static LocalDate[] getWeekdays(LocalDate date) {
     LocalDate monday = date;
     if(date.getDayOfWeek().getValue() > 1) {
       monday = date.minusDays(date.getDayOfWeek().getValue() - 1);
     }
     LocalDate[] weekdays = new LocalDate[5];
     weekdays[0] = monday;
     for(int i = 1; i <= 4; i++) {
       weekdays[i] = monday.plusDays(i);
     }
     return weekdays;
   }
}

Aufrufen tue ich dann so LocalDate[] weekdays = Wochentage.getAktuelleWoche();

Jetzt frage ich mich, wieso bei getAktuelleWoche() die Wochentage nicht in der Console angezeigt werden.
Bei getWoche() klappt es.
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
Ich will ja kein Spielverderber sein, aber in seiner getWeekdays aus dem Post von 11:06 war doch ein return weekdays drin ??

Edit: ihr meint wahrscheinlich in seiner Methode woche() fehlt der return weekdays ??!!

Natürlich hast du Recht ;)
Habe mich hier selber mit den Methodennamen vertan

@robotic Jap schau dir was JStein52 geschrieben hat, das sollte deine Frage beantworten.
 

robotic

Mitglied
Ihr hattet recht! Ich habe es nun abgeändert:
Java:
import java.time.LocalDate;

public class Wochentage {
    public static LocalDate[] getAktuelleWoche() {
  
     LocalDate today = LocalDate.now();
  
     LocalDate[] weekdays = getWeekdays(today);
     System.out.println(weekdays[0]);
     System.out.println(weekdays[1]);
     System.out.println(weekdays[2]);
     System.out.println(weekdays[3]);
     System.out.println(weekdays[4]);
     return weekdays;
        }
    public static LocalDate[] getWoche() {

     LocalDate today = LocalDate.of(2015, 10, 15);
  
     LocalDate[] weekdays = getWeekdays(today);
     System.out.println(weekdays[0]);
     System.out.println(weekdays[1]);
     System.out.println(weekdays[2]);
     System.out.println(weekdays[3]);
     System.out.println(weekdays[4]);
     return weekdays;
   }

   public static LocalDate[] getWeekdays(LocalDate date) {
     LocalDate monday = date;
     if(date.getDayOfWeek().getValue() > 1) {
       monday = date.minusDays(date.getDayOfWeek().getValue() - 1);
     }
     LocalDate[] weekdays = new LocalDate[5];
     weekdays[0] = monday;
     for(int i = 1; i <= 4; i++) {
       weekdays[i] = monday.plusDays(i);
     }
     return weekdays;
   }
}

Bin mir nur nicht sicher ob es elegant gelöst wurde, weil ich die getWoche() quasi kopiert habe.
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
Nein ist nicht elegant gelöst. Da die Methode "getWoche" nun keinen Parameter mehr hat und somit immer fix die Wochentage der Woche vom 15.10.2015 zurückgibt.
Ich weiß nicht warum du den Code von mir nochmal ändern musstest ... so wie ich ihn gepostet habe hättest du ihn nur kopieren und bei dir einfügen müssen.

Oder geht es dir um die Konsolenausgaben? Die würde ich wenn ich der Methode "getWeekdays" vor dem return einfügen.
 

robotic

Mitglied
Ja, es geht mir auch um die Konsolenausgabe. Hätte gerne beides.
Und getWoche() soll mir immer die Woche anzeigen die ich gerne hätte.
Deshalb dachte ich, ich könnte später irgendwann im argument statt fix Werte, einfach int variablen einfügen, die ich dann über "Scanner(System.in)" eingeben kann...hoffe das klappt so wie ich mir das denke.

Aber bevor ich sowas mache möchte ich vorerst nur getAktuelleWoche() benutzen und das Programm so gut es geht zum laufen bringen.
 

Joose

Top Contributor
Java:
import java.time.LocalDate;

public class Wochentage {
    public static LocalDate[] getAktuelleWoche() {
          return getWoche(LocalDate.now());
        }

   public static LocalDate[] getWoche(int year, int month, int day) {
          return getWoche(LocalDate.of(year, month, day));
       }

    public static LocalDate[] getWoche(LocalDate date) {
           return getWeekdays(date);
        }

   public static LocalDate[] getWeekdays(LocalDate date) {
     LocalDate monday = date;
     if(date.getDayOfWeek().getValue() > 1) {
       monday = date.minusDays(date.getDayOfWeek().getValue() - 1);
     }
     LocalDate[] weekdays = new LocalDate[5];
     weekdays[0] = monday;
    // hier kannst du montag ausgeben
     for(int i = 1; i <= 4; i++) {
       weekdays[i] = monday.plusDays(i);
      // hier kannst du die anderen tage ausgeben
     }
     return weekdays;
   }
}

Die Konsolenausgabe solltest du dann in der Methode "getWeekdays" realisieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
F Problem beim entfernen von mehreren Listenelementen auf einmal (Programmierung des Spiels Arschloch) Java Basics - Anfänger-Themen 1
B Problem beim grundsätzlichen Verständnis bei Rekursion mit 2-dimensionalen Array Java Basics - Anfänger-Themen 6
E Datentypen Problem beim Speichern von enum. Java Basics - Anfänger-Themen 10
A Problem beim Deklarieren von einem BOOLEAN Java Basics - Anfänger-Themen 4
B Gleicher Prozess starten und stoppen (Problem beim Stoppen) Java Basics - Anfänger-Themen 5
DestinatioN Problem beim splitten eines Satzes in Wörter und die Wörter in Buchstaben Java Basics - Anfänger-Themen 2
B Problem beim Angeben einer Eingabe Java Basics - Anfänger-Themen 12
J Encoding Problem beim Einlesen einer txt Datei mit Umlauten Java Basics - Anfänger-Themen 3
D Problem beim umwandeln eines Strings in eine Dzezimalzahl Java Basics - Anfänger-Themen 6
A Compiler-Fehler Problem beim einbinden der applet Klasse Java Basics - Anfänger-Themen 2
L Compiler-Fehler Problem beim Programmieren eines Kalenders (java.lang.ArrayIndexOutOfBoundsException) Java Basics - Anfänger-Themen 2
C Problem beim laden eines BufferedImage Java Basics - Anfänger-Themen 2
D Problem beim Lesen einer txt-Datei Java Basics - Anfänger-Themen 8
fLooojava Bluetooth Projekt - Problem beim mehrmaligen Senden Java Basics - Anfänger-Themen 5
E Problem beim Übergeben von Parameter an Methode Java Basics - Anfänger-Themen 2
Z Problem beim Lesen und Schreiben einer Datei Java Basics - Anfänger-Themen 10
R Problem beim erstellen eines neuen Klassenobjekts Java Basics - Anfänger-Themen 2
F Input/Output Problem beim einlesen eines Strings Java Basics - Anfänger-Themen 3
J Problem beim auslesen von Int Wert aus YML-Datei Java Basics - Anfänger-Themen 6
P Problem beim Abschluss im Kompositum Java Basics - Anfänger-Themen 3
M Problem mit null pinterexception beim laden von Bildern Java Basics - Anfänger-Themen 20
K Problem beim Array aufruf Java Basics - Anfänger-Themen 4
J Problem beim ausführen in cmd.exe Java Basics - Anfänger-Themen 4
J Variablen Problem beim einlesen einer Zahl Java Basics - Anfänger-Themen 7
A Problem beim Compilieren Java Basics - Anfänger-Themen 11
J Problem beim Fenster Java Basics - Anfänger-Themen 4
tux20 Problem beim Schreiben von List to File Java Basics - Anfänger-Themen 2
M Problem beim Compilieren Java Basics - Anfänger-Themen 14
Maxim6394 Problem beim Abspielen von Sounds Java Basics - Anfänger-Themen 8
S Problem beim ersten compilieren überhaubt Java Basics - Anfänger-Themen 43
H Problem beim lesen des InputStreams von einem Subprozess Java Basics - Anfänger-Themen 4
Luk10 Problem beim .jar Datei erstellen Java Basics - Anfänger-Themen 19
L Problem beim Ausführen Java Basics - Anfänger-Themen 40
A Problem beim einfügen in eine Datenbank Java Basics - Anfänger-Themen 2
E Problem beim Programmieren eines Kartenspiels Java Basics - Anfänger-Themen 3
A Problem beim Ausführen einer .jar datei auf externen System Java Basics - Anfänger-Themen 5
M Problem beim compilieren Java Basics - Anfänger-Themen 6
JAVAnnik problem beim lvl laden Java Basics - Anfänger-Themen 15
L Problem beim Einlesen einer Datei in einen String Java Basics - Anfänger-Themen 12
W Problem beim erstellen eines Tests Java Basics - Anfänger-Themen 16
JAVAnnik Problem beim Objekt bewegen Java Basics - Anfänger-Themen 20
A Erstes Programm - Problem beim Ausführen als jar Java Basics - Anfänger-Themen 3
S Problem beim Speichern und Laden von Daten Java Basics - Anfänger-Themen 13
B Problem beim Abspielen einer Videodatei Java Basics - Anfänger-Themen 4
S Problem beim Erstellen eines Scanner-Objekts Java Basics - Anfänger-Themen 7
W Problem beim CSV-Import Java Basics - Anfänger-Themen 5
M Datentypen Problem beim zusammenstellen eines Abfrage-Strings Java Basics - Anfänger-Themen 3
K Collections Problem beim import von Packages Java Basics - Anfänger-Themen 10
S Problem beim Kompilieren - cannot find symbol - constructor() Java Basics - Anfänger-Themen 12
B Problem beim Email versenden mit Javamail Java Basics - Anfänger-Themen 5
H Problem beim Anfang von Java (Java Editor) Java Basics - Anfänger-Themen 2
I Problem beim Schreiben eines ersten Programms Java Basics - Anfänger-Themen 3
D Problem beim Zeichnen von "Das Haus vom Nikolaus" Java Basics - Anfänger-Themen 10
D Problem beim Auslesen aus File Java Basics - Anfänger-Themen 3
A Problem beim Splitten eines Strings Java Basics - Anfänger-Themen 10
S Problem mit ObjectInputStream beim Einlesen von LinkedList Java Basics - Anfänger-Themen 3
J Problem beim Löschen von elementen aus einer ArrayList Java Basics - Anfänger-Themen 5
V Problem beim Programm laden Java Basics - Anfänger-Themen 5
H Problem beim kompilieren Java Basics - Anfänger-Themen 3
C ActionListener problem beim starten von programmen Java Basics - Anfänger-Themen 3
4 OOP Problem beim Speichern verschiedener Klassen in verschiedenen Dateien Java Basics - Anfänger-Themen 25
T Problem beim Returnwert einer Methode Java Basics - Anfänger-Themen 12
M line.separator: Problem beim Lesen einer Datei Java Basics - Anfänger-Themen 11
Miladriel Problem beim Neuzeichnen nach deiconify Java Basics - Anfänger-Themen 9
R Problem beim Ausführen von Java-PGM aus der shel Java Basics - Anfänger-Themen 3
G Problem beim Sortieren einer Liste Java Basics - Anfänger-Themen 20
M Problem beim Ereignishandling mit Menü Java Basics - Anfänger-Themen 2
H problem beim zeichen im JFrame Java Basics - Anfänger-Themen 6
F Problem beim Objekteaufruf... Java Basics - Anfänger-Themen 4
E BlockChallenge: Problem beim löschen der Blöcke Java Basics - Anfänger-Themen 3
H Problem beim Verkürzen von Programm Java Basics - Anfänger-Themen 3
T Problem beim Werfen und Fangen von Exceptions Java Basics - Anfänger-Themen 2
M Problem beim Zugriff auf Daten GUI + Startklasse Java Basics - Anfänger-Themen 4
P Problem beim Thread Java Basics - Anfänger-Themen 20
0 problem beim Polygon zeichnen Java Basics - Anfänger-Themen 3
V Problem beim erstellen eines ausführbaren Programs Java Basics - Anfänger-Themen 5
0 Problem beim Starten des Applets Java Basics - Anfänger-Themen 2
N Problem beim Durchsuchen einer LinkedList Java Basics - Anfänger-Themen 5
G Problem beim Programmieren von Blackjack Java Basics - Anfänger-Themen 15
R Problem beim Laden eines Images Java Basics - Anfänger-Themen 7
K Problem beim installieren des JDK 1.6+ version Java Basics - Anfänger-Themen 3
T Problem beim Konsolenstart Java Basics - Anfänger-Themen 5
C Problem beim Berechnen der Quadratwurzel Java Basics - Anfänger-Themen 3
C Problem beim nutzen von Teilprogrammen in main Java Basics - Anfänger-Themen 2
M Problem beim Zeichnen Java Basics - Anfänger-Themen 5
D Problem beim Kompilieren Java Basics - Anfänger-Themen 4
D Problem beim auslesen von TextArea Java Basics - Anfänger-Themen 3
G Problem beim Schreiben in Textdatei Java Basics - Anfänger-Themen 9
F ggT finden - problem beim qc Java Basics - Anfänger-Themen 4
S Problem mit url, inputStream und bytes beim Quellcode laden. Java Basics - Anfänger-Themen 6
G Habe ein Problem mit syn-Editor ( beim compilieren) Java Basics - Anfänger-Themen 4
S Problem beim Verstehen des Quellcodes Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben