Was macht die Klasse?

niklas1620

Neues Mitglied
Hallo, ich frage mich, was der Folgende Code ausgibt und wieso er das tut:
Java:
import static java.lang.Integer.parseInt;

import java.util.Calendar;

public class CleanMe {

    static String[] weekDays = new String[] { "Sun", "Mon", "Tues", "Wednes", "Thurs", "Fri", "Satur" };

    static void setCalendarDate(final Calendar cal, final String date, final String sep) {
        final String[] fs = date.split(sep);
        cal.set(parseInt(fs[0]), parseInt(fs[1]) - 1, parseInt(fs[2]));
    }

    public static void main(final String[] args) {
        final Calendar cal = Calendar.getInstance();
        if (args.length >= 1) {
            if (args[0].indexOf("-") >= 0) {
                setCalendarDate(cal, args[0], "-");
            } else if (args[0].indexOf("/") >= 0) {
                setCalendarDate(cal, args[0], "/");
            } else if (args[0].indexOf(".") >= 0) {
                final String[] fs = args[0].split(".");
                cal.set(parseInt(fs[0]), parseInt(fs[1]) - 1, parseInt(fs[2]));
            }
        }
        final int wd = cal.get(Calendar.DAY_OF_WEEK);
        System.out.printf("%sday\n", weekDays[wd - 1]);
    }

}
Ich würde mich über eine Rückmeldung sehr freuen.
 
Zuletzt bearbeitet von einem Moderator:

MoxxiManagarm

Top Contributor
Probier es doch einfach mal aus?
Das wird schwer wenn niklas nicht weiß was der Code tut, schließlich muss er entsprechende Eingabeparameter mitgeben.

ich frage mich, was der Folgende Code ausgibt und wieso er das tut:

Gehe Zeile für Zeile durch und kommentiere ihn dir, falls notwendig Du kannst dir den Code so umsortieren, dass er etwa der groben Ausführungsreihenfolge entspricht

Dein Code erwartet Eingabeparameter, mindestens einen. Es wird auch nur der erste Eingabeparameter ausgewertet, der Rest wird ignoriert.

Dieser erste Eingabeparameter wird auf das Vorhandensein von entweder - . oder / ausgewertet und auf das gefundene Zeichen geteilt. Der folgende Code suggeriert, dass der Code immer 3 Teile erwartet. Diese 3 Teile sollen außerdem in einen Integer umgewandelt werden. Also erwartet der Code Parameter in der Form xx.xx.xx xx/xx/xx bzw. xx-xx-xx wobei xx immer ein ganzzahliger Wert ist. Anschließend werden diese 3 Teile verwendet, um die set-Methode in der Calendar Instanz aufzurufen.
https://docs.oracle.com/en/java/jav...base/java/util/Calendar.html#set(int,int,int)

Die 3 Teile sind also Jahr, Monat und Tag in dieser Reihenfolge. Der erwartete Eingabeparameter ist entsprechend yyyy/MM/dd, yyyy-MM-dd oder yyyy.MM.dd.

Nachdem der Tag dem Kalendar bekannt ist wird mit der get-Methode eine Eigenschaft des Datums hinterfragt.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Calendar.html#get(int)
Die hinterfragte Eigenschaft ist durch die Konstante Calendar.DAY_OF_WEEK definiert.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Calendar.html#DAY_OF_WEEK
Die Eigenschaft ist ein int Wert von [1, 7] und beginnt bei der Sonntags-Entsprechung. Das Dekrement von diesem Wert entspricht dem Index im Array, in welchem sich letztlich "Übersetzungen" für diesen Zahlenwert befinden. Diese "Übersetzung" wird dann ausgegeben. printf ist eine spezielle Methode zur Formatierung der Werte. %s steht dabei für einen String, den du nach dem Komma angibst. Der String ist dabei die "Übersetzung" aus dem Array. Es wird noch "day" an diese Ausgabe angehangen (steht nach dem %s). Das Resultat ist ein vollständiger Tagesname in Englisch.

Falls kein Parmater mit / - oder . gegeben war verwendet das Programm das Default-Datum.
An instant in time can be represented by a millisecond value that is an offset from the Epoch, January 1, 1970 00:00:00.000 GMT (Gregorian).
Ich glaube das müsste ein Donnerstag sein.

Speziell anzumerken ist, dass der Teil bei . theoretisch genau das Gleiche tut wie bei / und -. Bei / und - wird die Funktionalität nur in eine Methode ausgelagert. Hier gibt es aber einen kleinen Haken, warum ich auch sagte theoretisch und oben so getan habe als wäre es so. Der Haken: https://docs.oracle.com/en/java/jav...java/lang/String.html#split(java.lang.String)
Siehst du es? Ja? Nein? Ich verrate es dir, es ist das Wort Regular Expression. Der Punkt hat dort eine besondere Bedeutung - ein beliebiges Zeichen. Es kann also nicht funktionieren wie gewollt. Der Code wird vermutlich entweder in eine ArrayIndexOutOfBoundException oder NumberFormatException laufen. Lösung: Den Punkt escapen

Kurz zusammengefasst macht der Code abgesehen von dem Fehler Folgendes: Parsed ein Datum in den oben erwähnten Formaten und gibt den Wochentag dieses Datum mit dem englischen Bezeichner aus.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
ohneInformatik; For Schleife. Was macht dieser Code?? Java Basics - Anfänger-Themen 5
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
berserkerdq2 Warum macht man in IJVM am Anfang Bipush 0? Java Basics - Anfänger-Themen 1
S Was macht ++ ohne Schleife? Java Basics - Anfänger-Themen 4
J Hallo zusammen , was macht diese Methode hier genau? Java Basics - Anfänger-Themen 3
K Gleitkommazahl macht man 0 punkt matisse oder 1 punkt matisse Java Basics - Anfänger-Themen 2
B Methoden warum macht die Methode nicht das was ich erwarte? Java Basics - Anfänger-Themen 2
E Macht Java Rechenfehler beim Potenzieren und Mod? Java Basics - Anfänger-Themen 5
V Switch Methode macht Code kaputt Java Basics - Anfänger-Themen 18
T Was macht diese Zeile? Java Basics - Anfänger-Themen 9
R getUserProperties() macht für mich keinen Sinn Java Basics - Anfänger-Themen 8
L Was genau macht -> Java Basics - Anfänger-Themen 18
J Was genau macht die Methode close() im InputStream? Java Basics - Anfänger-Themen 5
U Best Practice Fehleranalyse, welche Fehler macht Ihr beim Lernen bzw. auch später Java Basics - Anfänger-Themen 12
L Hilfe! Was macht dieser Code? Java Basics - Anfänger-Themen 1
C Was macht `public class ClassName<T extends Comparable<T>>`? Java Basics - Anfänger-Themen 14
M Was macht super (...)? Java Basics - Anfänger-Themen 1
Tommy135 Klassen jComboBox macht nicht was sie soll Java Basics - Anfänger-Themen 4
J JButton macht was er will Java Basics - Anfänger-Themen 3
R While-Schleife macht nicht was sie soll Java Basics - Anfänger-Themen 24
JavaNewbie2.0 Habe ein frage wie man etwas macht. Java Basics - Anfänger-Themen 13
B Was macht diese Methode? Java Basics - Anfänger-Themen 9
P Was macht diese methode Java Basics - Anfänger-Themen 2
Tacofan Was macht dieses "Stückchen Code"? Java Basics - Anfänger-Themen 3
F JSON null macht mir ein Problem Java Basics - Anfänger-Themen 3
L Was genau macht "public static void" ? Java Basics - Anfänger-Themen 12
C Hilfe - Kleines Programm macht mir Schwierigkeiten Java Basics - Anfänger-Themen 2
G Methoden Was genau macht die Methode light.setInfluencingBounds ? Java Basics - Anfänger-Themen 5
B Erste Schritte Way of life ohne import - Habe Beispiel, macht Unfug Java Basics - Anfänger-Themen 21
D Methoden Filewriter macht keine Zeilenumbrüche Java Basics - Anfänger-Themen 3
E Erste Schritte [Noob-Frage] Meine If-Abfrage macht nicht, was sie soll... Java Basics - Anfänger-Themen 2
H Tastatur.wurdeGedrueckt() macht nicht das, was ich will :/ Java Basics - Anfänger-Themen 2
K Was macht hier genau return? Java Basics - Anfänger-Themen 2
E Einfache For-Schleife macht nicht was sie soll Java Basics - Anfänger-Themen 2
J Shakersort, das Array macht Probleme! Java Basics - Anfänger-Themen 4
A scan.nextLine() - Wenn man zu lange nichts macht, soll etwas passieren Java Basics - Anfänger-Themen 3
C Scrollpanel autoscroll(false) macht nix Java Basics - Anfänger-Themen 2
M StringTokenizer macht Quatsch Java Basics - Anfänger-Themen 21
N Papaklasse macht Zicken mit Parameterkonstruktor Java Basics - Anfänger-Themen 7
K Datentypen double x als Bruch aus Integern macht x zu integer? Java Basics - Anfänger-Themen 3
C Erste Schritte was macht eigentlich "for (;;)" Java Basics - Anfänger-Themen 7
C JDK-Installer macht nichts Java Basics - Anfänger-Themen 11
A JApplet: einbinden von weiteren Jars macht Probleme Java Basics - Anfänger-Themen 2
B Variablen Wie macht man eine call by reference mit primitiven Datentypen in Java? Java Basics - Anfänger-Themen 2
I Für was macht man "deep Kopien" Java Basics - Anfänger-Themen 4
S Erste Schritte While do Schleife - macht nicht was sie soll Java Basics - Anfänger-Themen 7
9 Programm macht nicht was es soll Java Basics - Anfänger-Themen 6
H Was macht diese Methode? Java Basics - Anfänger-Themen 3
S JApplet macht Probleme Java Basics - Anfänger-Themen 2
Y Was macht folgende Regular Expression Java Basics - Anfänger-Themen 2
M Was macht bzw. was bringt ein constructor? Java Basics - Anfänger-Themen 12
P orphaned case macht probs Java Basics - Anfänger-Themen 3
ruutaiokwu System.err.print(ln) macht ein durcheinander??! Java Basics - Anfänger-Themen 8
X Selectionsort macht Probleme Java Basics - Anfänger-Themen 2
P was macht der code? Java Basics - Anfänger-Themen 4
M OOP for Schleife macht mir Probleme mit Arrays Java Basics - Anfänger-Themen 7
R Was macht...? Java Basics - Anfänger-Themen 4
alderwaran closed source jar, kein javadoc. was macht methode x eigentlich? ( oracle forms pjc beans ) Java Basics - Anfänger-Themen 2
M JavaEditor macht Probleme! Invalid Flag! Java Basics - Anfänger-Themen 9
P Was macht dieser Source code? Java Basics - Anfänger-Themen 5
R BufferedWriter macht komische Zeichen Java Basics - Anfänger-Themen 3
I KeyEvent macht nichts.^^ Java Basics - Anfänger-Themen 3
E new File macht den Pfad kaputt Java Basics - Anfänger-Themen 15
S Wie macht man sowas?? Ist da ne If-Schleife richtig?? Java Basics - Anfänger-Themen 22
Pithecanthropus Thread anhalten, der aber ein readObject() macht. Java Basics - Anfänger-Themen 4
T aufruf methode in methode macht probleme Java Basics - Anfänger-Themen 9
I Was macht diese Funktion? Java Basics - Anfänger-Themen 4
0 Was macht eine IOException? Java Basics - Anfänger-Themen 4
0 Was ist ein GregorianCalender?(Was macht es etc.) Java Basics - Anfänger-Themen 2
T Calender / DateFormat macht plus ein Monat Java Basics - Anfänger-Themen 3
T "x hoch y" macht nur "x mal x"^^ Java Basics - Anfänger-Themen 3
M Objektorientierung - wie macht man's richtig? Java Basics - Anfänger-Themen 3
A Macht es Sinn Arraylisten mit Gettern zu übergeben? Java Basics - Anfänger-Themen 19
M JPanel und JTabbedPane macht probleme Java Basics - Anfänger-Themen 5
S Formatierter String macht Probleme Java Basics - Anfänger-Themen 9
G JComboBox macht Probleme Java Basics - Anfänger-Themen 7
G Warum das Prog mehrmals das gleiche macht wegen ItemListener Java Basics - Anfänger-Themen 4
S Eclipse macht 2 Fenster auf Java Basics - Anfänger-Themen 4
S was macht super() ? Java Basics - Anfänger-Themen 7
B replaceAll macht nix! :-( Java Basics - Anfänger-Themen 4
V .jar macht keine Datenbank abfragen Java Basics - Anfänger-Themen 3
S Was macht [Integer.toString(number, tarRadix)] Java Basics - Anfänger-Themen 3
T Möchte Charwert 23C° mit java.util.Scanner einlesen macht Pr Java Basics - Anfänger-Themen 2
S wie macht man aus einem int ein double? Java Basics - Anfänger-Themen 2
F Eingabe darf nur 1 oder 0 sein. Meine Lösung macht Probleme. Java Basics - Anfänger-Themen 8
D [DONE] JDK Installation: Compiler macht Probleme. Java Basics - Anfänger-Themen 3
A Was macht dieser Prgrammteil? Java Basics - Anfänger-Themen 2
H Key Listener macht nicht das was er soll Java Basics - Anfänger-Themen 4
G RadioButton in JTable macht Probleme Java Basics - Anfänger-Themen 5
M was macht Syncronized ? Java Basics - Anfänger-Themen 2
G Was bzw. wie macht man das, wenn man jar. datei hat Java Basics - Anfänger-Themen 6
G warum macht er das Java Basics - Anfänger-Themen 4
R BorderLayout macht meine Zeichnung kaputt Java Basics - Anfänger-Themen 14
G Was macht dieses Program ? Java Basics - Anfänger-Themen 13
G Was macht dieser Code? Java Basics - Anfänger-Themen 3
M renderer macht nur 1 spalte bunt Java Basics - Anfänger-Themen 5
U was macht "private" ? :) Java Basics - Anfänger-Themen 7
frau-u guter Stil - wie macht mans am Besten? Java Basics - Anfänger-Themen 8
E JOptionPane macht keine Ausgabe Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben