Mit Countdown Midnestdauer für Teilaufgabenerledigung erzwingen

berndoa

Top Contributor
Hallo,
ich habe ein mehr oder weniger gut geschriebenes Programm, in dem mehrere Unteraufgaben erledigt werden.

Für manche der Unteraufgaben will ich einfach dass das Programm (natürlich) die Aufgabe ausführt.
Aber ich will auch von der aufgewendeten zeitdauer her ein wenig Struktur reinbringen.
Daher will ich für eine gegebene Aufgabe hinkriegen dass er die Aufgabe erledigt und aber, sollte weniger Zeit als eine gegebene Zeitspanne vergangen sein, er noch bis dahin wartet.

Wenn ich dem programm also bspw. als Unteraufgabe gebe, es soll die Zahlen 1-1000 in der Konsole drucken.
Und gebe als Zeitspanne 4 Sekunden vor.

Dann will ich dass er die 1000 Zahlen auf der Konsole ausgibt, selbstredend.
Und dann aber , seit Beginn der Aufgabe noch keine 4 Sekunden rum sein, dass er so lange wartet bis eben 4 sekunden rum sind.

Falls er für die eigentliche aufgabe so schon länger als 4 sekunden gebraucht hat, soll er gar nix extra tun.

Damit kann ich sicherstellen dass das pogramm in jedem fall eine Zeit von max{Länge der Aufgabe, 4 sekunden} braucht.
Klar ist das sinnfrei, aber mit etwas gedrehe an der vorgegebenen Zeitspanne kann ich dann bspw. sicherstellen dass er für eine Aufgabe, je nach CPU AUslastung und so,
nicht einmal 1.97 sekunden, dann 3.54, dann 2,31 sekunden braucht.
sondern konstant 4 sekunden (falls ich halt durhc trial and error recht sicher weiß dass er nie länger als 4 sekunden für die aufgabe braucht und 4 sekunden als zeitspanne vorgebe)


Frage ist nun, wie umsetzen?

Habe einige Aufgaben im Skript, mit unterschiedlichen vorzugebenden Zeitdauern.


Mein naives Vorgehen wäre die folgt:
Eine Methode wie folgt definieren:
Java:
    public void sleeptilltarget(long startTime, long targetmilliTime){
        long tosleep=1000000*targetmilliTime-(System.nanoTime()-startTime);
        if(tosleep>10000000){//10 milliseconds
            try{
                long millis= (long) (tosleep / 1000000.0);
                Thread.sleep(millis);
            }
            catch(Exception e){}
        }
        return;
    }

Dann im Objekt (Alles passiert in dem eine bestimmten Objekt) ein Attribut Starttime einbauen, das ich bei bedarf anpassen kann.

Wo auch immer eine Aufgabe kommt, dann sowas wie
Code:
StartTime=System.nanoTime();
//hier dutzende Zeilen die die Aufgabe erledigen
sleeptilltarget(StartTime,4000);

wenn ich 4 sekunden=4000 millisekunden dauer haben will.

Aber da muss ich halt überall vor einer aufgabe das starttime attribut ändern bzw. für gleichzeitig beobachtete Sachen separate starttime attribute bauen (wenn ich bspw. gleichzeitig die dauer des gesamtprogramms und die von unteraufgaben C7 beobachten will, braucht es ja 2 attribute aka variabeln um die untershciedlichen startzeiten zu tracken)

Hat Jemand eine bessere Idee wie ich das Ganze umsetzen könnte?
Bin noch nicht so wirklich zufrieden damit, obwohl es den Zweck wohl erfüllen sollte.
shcön ist es halt aber nicht wenn die startzeit als attribut gespeichert wird und eben die methode aufgerufen werden muss.

Habe so das gefühl, so eine art countdown müsste man irgendwie intelligenter hinbekommen können :-/


Bevor ich diese idee aufgriff, hatte ich bspw. einfahc einen 20 sekunden sleep hinter jede aufgabe gepackt.
Was natürlich witzlos ist, da wartet dann die meiste zeit das programm "auf schön Wetter" wo es längst weiterarbeiten könnte.Und an anderer stelle habe ich den sleep womöglich zu kurz angesetzt sodass es nicht mehr läuft wie gewohnt.
(Mein programm hängt auch von "äusseren geschehnissen" ab, bspw. klickt mein Programm einen button, nach einer gewissen zeit erscheint dann ein button und ds programm soll die farbe des buttons ablesen. viel variable zeitdauern drin, die ich aber effizienztechnisch halbwegs eingrenzen will)
 

LimDul

Top Contributor
Das kann man mit Lambdas schön lösen:
Java:
package de.limdul.javaforum;

import java.time.LocalDateTime;
import java.util.function.Supplier;

public class RunAndWait {

    public static <T> T runAndWait(Supplier<T> methodToRun, int secondsToWait, Class<T> resultClass) {
        long currentTimeMillis = System.currentTimeMillis();
        T result = methodToRun.get();
        long duration = System.currentTimeMillis() - currentTimeMillis;
        long waitTime = secondsToWait * 1000 - duration;
        try {
            Thread.sleep(waitTime);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return result;
    }

    public static void runAndWait(Runnable methodToRun, int secondsToWait) {
        long currentTimeMillis = System.currentTimeMillis();
        methodToRun.run();
        long duration = System.currentTimeMillis() - currentTimeMillis;
        long waitTime = secondsToWait * 1000 - duration;
        try {
            Thread.sleep(waitTime);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        System.out.println("Start: " + LocalDateTime.now());
        int result = runAndWait(() -> calculateFibonacci(10), 5, Integer.class);
        System.out.println(result);
        System.out.println("End: " + LocalDateTime.now());
    }

    public static int calculateFibonacci(int n) {
        if (n <= 0) {
            return 0;
        } else if (n == 1) {
            return n;
        } else {
            return calculateFibonacci(n - 1) + calculateFibonacci(n - 2);
        }
    }

}

Zwei Hilfsmethoden, die das übernehmen, eine die Methoden aufrufen kann, die einen Wert zurückgeben, eine die für void-Methoden einfacher ist.

Beispielausgabe des Programms:
Start: 2022-05-13T21:14:33.322878600
55
End: 2022-05-13T21:14:38.334582300
 

berndoa

Top Contributor
Das kann man mit Lambdas schön lösen:
Java:
package de.limdul.javaforum;

import java.time.LocalDateTime;
import java.util.function.Supplier;

public class RunAndWait {

    public static <T> T runAndWait(Supplier<T> methodToRun, int secondsToWait, Class<T> resultClass) {
        long currentTimeMillis = System.currentTimeMillis();
        T result = methodToRun.get();
        long duration = System.currentTimeMillis() - currentTimeMillis;
        long waitTime = secondsToWait * 1000 - duration;
        try {
            Thread.sleep(waitTime);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return result;
    }

    public static void runAndWait(Runnable methodToRun, int secondsToWait) {
        long currentTimeMillis = System.currentTimeMillis();
        methodToRun.run();
        long duration = System.currentTimeMillis() - currentTimeMillis;
        long waitTime = secondsToWait * 1000 - duration;
        try {
            Thread.sleep(waitTime);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        System.out.println("Start: " + LocalDateTime.now());
        int result = runAndWait(() -> calculateFibonacci(10), 5, Integer.class);
        System.out.println(result);
        System.out.println("End: " + LocalDateTime.now());
    }

    public static int calculateFibonacci(int n) {
        if (n <= 0) {
            return 0;
        } else if (n == 1) {
            return n;
        } else {
            return calculateFibonacci(n - 1) + calculateFibonacci(n - 2);
        }
    }

}

Zwei Hilfsmethoden, die das übernehmen, eine die Methoden aufrufen kann, die einen Wert zurückgeben, eine die für void-Methoden einfacher ist.

Beispielausgabe des Programms:
Puh, also von Lambdas habe ich jetzt wirklich gar keine Ahnung.
Ich kenn das bloss von formalen Sprachen, Grammatiken und so, hat aber vermutlich hiermit gar nix zu tun :-D
 

mihe7

Top Contributor
Puh, also von Lambdas habe ich jetzt wirklich gar keine Ahnung.
In dem Code taucht auch nur ein Lambda-Ausdruck auf, nämlich in Zeile 35:
Java:
int result = runAndWait(() -> calculateFibonacci(10), 5, Integer.class);

Wie Du aus den Parametern (allein schon an der Anzahl) ableiten kannst, wird hier die Methode
Java:
public static <T> T runAndWait(Supplier<T> methodToRun, int secondsToWait, Class<T> resultClass)
aufgerufen. Als Argument für den Parameter methodToRun wird also der Lambda-Ausdruck () -> calculateFibonacci(10) verwendet.

Ignorieren wir mal den Lamda-Ausdruck. Die Methode erwartet für methodToRun ein Objekt mit Supplier<T>-Interface. Der Typ T ergibt sich aus dem dritten Parameter resultClass.

Im Code, Zeile 35 (s. o.), wurde Integer.class übergeben, so dass im Aufruf ein Objekt mit Supplier<Integer>-Implementierung übergeben werden muss.

Und das kannst Du natürlich genauso wie ein Runnable-Interface z. B. mit einer anonymen inneren Klasse erzeugen:
Java:
int result = runAndWait(new Supplier<Integer>() {
        @Override
        public Integer get() {
            return calculateFibonacci(10);
        }
    }, 5, Integer.class);

Sprich: Du kannst den Lambda-Ausdruck () -> calculateFibonacci(10) hier einfach als Kurzschreibweise für
Java:
new Supplier<Integer>() {
        @Override
        public Integer get() {
            return calculateFibonacci(10);
        }
}
betrachten.
 

berndoa

Top Contributor
Das muss ich mir noch ein paar mal durchlesen, bis ich das kapiert habe.
Aber mal so konzeptuell gesprochen hast du im Prinzip das, was ich machen würde (Startzeit merken, kram machen, bisherige dauer berechnen, restzeit warten) in eine eigene runAndWait Methode ausgelagert, die du halt aufrufst.
Und rgendwie noch übergibst, was genau an der "rakm machen" Stelle an methode ausgeführt wird
 

berndoa

Top Contributor
In dem Code taucht auch nur ein Lambda-Ausdruck auf, nämlich in Zeile 35:
Java:
int result = runAndWait(() -> calculateFibonacci(10), 5, Integer.class);

Wie Du aus den Parametern (allein schon an der Anzahl) ableiten kannst, wird hier die Methode
Java:
public static <T> T runAndWait(Supplier<T> methodToRun, int secondsToWait, Class<T> resultClass)
aufgerufen. Als Argument für den Parameter methodToRun wird also der Lambda-Ausdruck () -> calculateFibonacci(10) verwendet.

Ignorieren wir mal den Lamda-Ausdruck. Die Methode erwartet für methodToRun ein Objekt mit Supplier<T>-Interface. Der Typ T ergibt sich aus dem dritten Parameter resultClass.

Im Code, Zeile 35 (s. o.), wurde Integer.class übergeben, so dass im Aufruf ein Objekt mit Supplier<Integer>-Implementierung übergeben werden muss.

Und das kannst Du natürlich genauso wie ein Runnable-Interface z. B. mit einer anonymen inneren Klasse erzeugen:
Java:
int result = runAndWait(new Supplier<Integer>() {
        @Override
        public Integer get() {
            return calculateFibonacci(10);
        }
    }, 5, Integer.class);

Sprich: Du kannst den Lambda-Ausdruck () -> calculateFibonacci(10) hier einfach als Kurzschreibweise für
Java:
new Supplier<Integer>() {
        @Override
        public Integer get() {
            return calculateFibonacci(10);
        }
}
betrachten.
Ich sollte mich echt mal näher mit Java beschäftigen.
Ich habe bspw. keine Ahnung was ein Runnable, Supplier, etc. ist.
Geschweigedenn diese Konstruktionen wie Methodenname.run().

Ich kenne nur die Nooblevelsachen wie
Klassenname.methodenname() und so.

Das hier scheinen mir mehr so "Meta" Sachen zu sein :-D

Aber cool zu wissen dass man einer Methode gewissermassen eine andere Methode als Argument übergeben kann (eben so ein Runnable Teil).

Dadurch kann man ja variieren welche Methode die runAndWait Methode genau ausführen soll, statt es hardcoden zu müssen.
 

mihe7

Top Contributor
Ich habe bspw. keine Ahnung was ein Runnable, Supplier, etc. ist.
Runnable und Supplier sind einfach zwei Interfaces, die jeweils nur eine Methode enthalten.

Das Runnable-Interface spezifiziert die Methode void run(), das Supplier-Interface die Methode T get().

Daher kannst Du natürlich, wenn Du ein Runnable ("ein Runnable" = Kurz für "Objekt mit implementierter Runnable-Schnittstelle") erhältst, die run()-Methode aufrufen. Analog, wenn Du einen Supplier bekommst, die get()-Methode.
 

berndoa

Top Contributor
Runnable und Supplier sind einfach zwei Interfaces, die jeweils nur eine Methode enthalten.

Das Runnable-Interface spezifiziert die Methode void run(), das Supplier-Interface die Methode T get().

Daher kannst Du natürlich, wenn Du ein Runnable ("ein Runnable" = Kurz für "Objekt mit implementierter Runnable-Schnittstelle") erhältst, die run()-Methode aufrufen. Analog, wenn Du einen Supplier bekommst, die get()-Methode.
Das ist klar, nur was nun Runnablename.run() bzw. SUppliername.get() genau tut, ist die Frage.

Ein interface per se gibt ja noch gar nichts vor, was es tut, das kommt ja sozusagen erst in der Implementierung davon.


Ich sehe dass der Code so Sinn macht im Sinne von (überall wurde das an die Methode übergeben was erwartett wurde).
Aber was es nun genau heißt, wenn ein RUnnable gerunt wird, naja....

Edit:
Bspw. bei

Java:
public static <T> T runAndWait(Supplier<T> methodToRun, int secondsToWait, Class<T> resultClass)
sehe ich weder in der Signatur noch im Methodenrumpf irgendwas, was mir (oder dem Computer) sagt
dass resultclass und methodtorun irgendwas miteinander zu tun haben.
Ich meine resultclass wird zwar als argument übergeben aber sprichwörtlich kommt es nirgends in der Methode vor, zumindest nicht offensichtlich.

Da fehlt mir wohl einfah Bskgroundknowledge wie java seine runnables, Suppliers, Classes(?) und so händelt. Denn eine stinknormales Interface ist das vermutlich nicht, da läuft eingie Magie im hintergrund :)
 

mihe7

Top Contributor
Ich sehe dass der Code so Sinn macht im Sinne von (überall wurde das an die Methode übergeben was erwartett wurde).
Aber was es nun genau heißt, wenn ein RUnnable gerunt wird, naja....
Das sind ganz normale Methodenaufrufe - und was die Methoden machen, hängt in erster Linie von der Spezifikation des Interfaces ab (die in Java allerdings zum großen Teil nicht formal sondern per Dokumentation erfolgt): https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html,

Die Spezifikation schränkt die möglichen Implementierungen ein. Bei diesen Interfaces ist sie - absichtlich - recht allgemein gehalten. Beim List-Interface ist das dagegen sehr viel genauer.

Da fehlt mir wohl einfah Bskgroundknowledge wie java seine runnables, Suppliers, Classes(?) und so händelt. Denn eine stinknormales Interface ist das vermutlich nicht, da läuft eingie Magie im hintergrund :)
Doch, das sind stinknormale Interfaces. Der Code dürfte (EDIT: ungefähr) so aussehen:

Java:
public interface Runnable {
    void run();
}

Java:
public interface Supplier<T> {
    T get();
}
Das wars.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Stunden/Tage Countdown Java Basics - Anfänger-Themen 9
T Countdown erstellen Java Basics - Anfänger-Themen 7
T Countdown funktioniert nicht Java Basics - Anfänger-Themen 5
W Threads 1h 20min Countdown Java Basics - Anfänger-Themen 5
J Countdown Java Basics - Anfänger-Themen 3
D Erste Schritte Countdown mehrfach verwenden Java Basics - Anfänger-Themen 5
F countdown Java Basics - Anfänger-Themen 5
G Countdown von Heute bis Zieldatum Java Basics - Anfänger-Themen 4
N Countdown Java Basics - Anfänger-Themen 4
W Countdown auf "schwarze Blöcke" Java Basics - Anfänger-Themen 3
F Countdown und dann Aktion Java Basics - Anfänger-Themen 4
S Countdown 5min bis 0sek Java Java Basics - Anfänger-Themen 10
C countdown/timer/Zeit warten lassen Java Basics - Anfänger-Themen 14
D Countdown Funktion aus SQl Datenbank Java Basics - Anfänger-Themen 21
N countdown zähl problem Java Basics - Anfänger-Themen 5
O Countdown mit Erhöhung Java Basics - Anfänger-Themen 2
H Countdown Java Basics - Anfänger-Themen 10
T Countdown, der in der selben Zeile bleibt Java Basics - Anfänger-Themen 6
D Timer bzw. Countdown Java Basics - Anfänger-Themen 3
T countdown Methode mit Timer Java Basics - Anfänger-Themen 2
F Countdown Probleme Java Basics - Anfänger-Themen 9
R Countdown erstellen Java Basics - Anfänger-Themen 3
S Countdown auf JPanel ausgeben Java Basics - Anfänger-Themen 6
M Countdown in Java Java Basics - Anfänger-Themen 16
B Countdown zwischen 2 Zeitpunkten Java Basics - Anfänger-Themen 4
M Code aus IntelliJ in "Textform" für Word-Paper? Java Basics - Anfänger-Themen 2
G Icon für App Java Basics - Anfänger-Themen 1
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10
D Apache HTTPClient für alle Fälle Java Basics - Anfänger-Themen 41
J Layout Manager, welcher ist der Richtige für mein Program? Java Basics - Anfänger-Themen 1
J Fehlermeldung unverständlich für Jakarta Java Basics - Anfänger-Themen 17
M Minimax-Algorithmus für Vier gewinnt Java Basics - Anfänger-Themen 11
M GUI für Vier-Gewinnt. Java Basics - Anfänger-Themen 4
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
R Operatoren Rechenoperation verwenden für Taschenrechner. Java Basics - Anfänger-Themen 32
Ostkreuz Counter für Booleanwerte Java Basics - Anfänger-Themen 8
B Regex Ausdrücke für Monate Java Basics - Anfänger-Themen 7
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
Jxhnny.lpz Randomisier für Buttons Java Basics - Anfänger-Themen 13
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Code für Bezahlsystem (auch bei Offline Aktivität) Java Basics - Anfänger-Themen 7
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
M monte carlo Algorithmus für 4 gewinnt Java Basics - Anfänger-Themen 12
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
M generate Methode für Streams Java Basics - Anfänger-Themen 6
I Datenmodell für "Tags" Java Basics - Anfänger-Themen 6
Lion.King for-Kontrollstruktur für Pyramide Java Basics - Anfänger-Themen 8
J File length als Prüfwert für Download Java Basics - Anfänger-Themen 5
K Spieleidee gesucht für Informatikprojekt - JAVA (BlueJ)? Java Basics - Anfänger-Themen 15
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
javamanoman Java für Online Banking Java Basics - Anfänger-Themen 12
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
P9cman Tipps für Rekursive Aufgaben mit Strings oder allgemein Java Basics - Anfänger-Themen 2
F Suche nach betreuender Person für eine Jahresarbeit der 12. Klasse. Java Basics - Anfänger-Themen 6
I SQL / JPA Query für StartDate und EndDate Java Basics - Anfänger-Themen 1
T getMethode für ein Array Java Basics - Anfänger-Themen 2
Fats Waller Farben mixen für den Hintergrund ? Java Basics - Anfänger-Themen 1
H Suche jemanden für kleine Uni-Abgabe/ mit Vergütung Java Basics - Anfänger-Themen 1
K Für was braucht man die left und right shift operatoren? Was bringen die, also welchen Zweck haben die? Java Basics - Anfänger-Themen 15
N Api nur für Textdatein (.txt) Java Basics - Anfänger-Themen 2
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
R Ist Java das Richtige für mich? Java Basics - Anfänger-Themen 4
E Mittelquadratmethode für Hexadezimalzahlen Java Basics - Anfänger-Themen 1
P Einfacher regulärer Ausdruck (RegEx) für E-Mail-Adressen Java Basics - Anfänger-Themen 2
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
O Wie erstelle ich eine Instanz in einer Klasse für die ich die Instanz will? Java Basics - Anfänger-Themen 4
S BubbleSort für ArrayLists Java Basics - Anfänger-Themen 3
T Übungsbuch für Anfänger Java Basics - Anfänger-Themen 3
L Konzept für Quiz Java Basics - Anfänger-Themen 33
D Methoden Plathhalter für Integer in einer Methode Java Basics - Anfänger-Themen 19
B Datentyp für Einzelnes Objekt oder Liste Java Basics - Anfänger-Themen 9
D Welche GUI Library für eine Client Server Chat App Java Basics - Anfänger-Themen 14
T Algorithmus für Index mit min-Wert Java Basics - Anfänger-Themen 2
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
L loop für Namen Java Basics - Anfänger-Themen 11
kxrdelis Konstruktor für ein Rechtwinkliges Dreieck Java Basics - Anfänger-Themen 10
S Fehler bei Code mit SubStrings für mich nicht auffindbar. Java Basics - Anfänger-Themen 4
nevel Programm für die Summer der Zahlen 1- 1ß Java Basics - Anfänger-Themen 12
I Entity erstellen, die für API gedacht ist Java Basics - Anfänger-Themen 33
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
Animal-Mother BMI Rechner erstellen für W/M Java Basics - Anfänger-Themen 7
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
A Java die richtige Programmiersprache für mein Projekt? Java Basics - Anfänger-Themen 1
I DecimalFormat in Zahlenformat für Währung, habe 7,99, bekomme aber 7 Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben