M
MagicM
Gast
Hallo, ich habe hier die Aufgabe, ein Programm zu schreiben, dass die Arbeitszeit von Arbeitern nach Eingabe derselben in Form zweier Uhrzeiten berechnet.
Man gibt also beispielsweise ein "18:30 21:30"
Dazu kommen verschiedene Erschwernisse, beispielsweise, dass bei 8 Stunden Arbeitszeit 45 Minuten Pause abgezogen werden und bei 4 Stunden 30 Minuten.
Ausserdem kann die erste Zeit hinter der zweiten Zeit liegen, in dem Fall ist die erste Zeit auf den Vortag bezogen.
Mein Ansatz soweit sieht so aus:
Er funktioniert so nicht; nachdem ich erst mal ewig rumgemacht habe, um rauszufinden, wie ich das gut kompilieren kann, sagt er nun IMMER als Ergebnis 4.5 Stunden.
Ich selbst überblicke nicht genau, wo mein Fehler liegt und bin mir vor allem nicht sicher, ob ich das mit dem Parsen richtig gemacht habe. Habe mir das selbst aus einigem Mal googlen erschlossen, kann also durchaus falsch sein...
Kann mir hierbei jemand helfen?
Gruß, MM
PS: Ich habe praktisch keinerlei Vorkenntnisse in Java, aber kann ein wenig Delphi. Java allerdings ist schon recht anders und gefällt mir bisher eigentlich nicht so besonders...
Man gibt also beispielsweise ein "18:30 21:30"
Dazu kommen verschiedene Erschwernisse, beispielsweise, dass bei 8 Stunden Arbeitszeit 45 Minuten Pause abgezogen werden und bei 4 Stunden 30 Minuten.
Ausserdem kann die erste Zeit hinter der zweiten Zeit liegen, in dem Fall ist die erste Zeit auf den Vortag bezogen.
Mein Ansatz soweit sieht so aus:
Java:
package uebung1;
public class WorkingTime {
public static void main(String[] args) {
/* Don't modify the main-function! */
/*
* times[][] contains the numbers given by the user: times[0][0] hour
* beginning times[0][1] minute beginning times[1][0] hour ending
* times[1][1] minute ending
*/
int[][] times = new int[2][2];
double fullWork = 0;
if (args.length == 2) {
times = myTime(args[0], args[1]);
if (times[0][0] == 0 && times[0][1] == 0 && times[1][0] == 0
&& times[1][1] == 0) {
fullWork = 0;
} else {
fullWork = myWorkingTime(times);
System.out.println("You worked " + fullWork
+ " hours this day!");
}
} else {
System.out.println("Wrong number of arguments. sExpected: 2");
}
}
private static int[][] myTime(String begin, String end) {
int[][] wTime = new int[2][2]; // contains result of conversion of given
String[] storestr=begin.split(":");
wTime[0][0] = Integer.parseInt(storestr[0]);
wTime[0][1] = Integer.parseInt(storestr[1]);
storestr=end.split(":");
wTime[1][0] = Integer.parseInt(storestr[0]);
wTime[1][1] = Integer.parseInt(storestr[1]);
//if (!(0<=wTime[0][0])<=23) || !(0<=wTime[1][0])<=23)) {myTime("00:00", "00:00")};
//if (!(0<=wTime[0][1])<=59) || !(0<=wTime[1][1])<=59)) {myTime("00:00", "00:00")};
return wTime;
}
private static double myWorkingTime(int[][] wTime)
{
double diff, decBegin, decEnd;
diff=0;
if (wTime[0][0]<=wTime[1][0])
{
if (wTime[0][1]<=wTime[1][1])
{
decBegin=wTime[0][0]+(wTime[0][1]/60);
decEnd=wTime[1][0]+(wTime[1][1]/60);
diff=decEnd-decBegin;
if (diff>4)
{if (diff>8)
diff=diff-0.75;
else diff=diff-0.5;
}
}
}
else
{
wTime[1][0]=wTime[1][0]+12;
decBegin=wTime[0][0]+(wTime[0][1]/60);
decEnd=wTime[1][0]+(wTime[1][1]/60);
diff=decEnd-decBegin;
}
return diff; // result as decimal number
}
}
Er funktioniert so nicht; nachdem ich erst mal ewig rumgemacht habe, um rauszufinden, wie ich das gut kompilieren kann, sagt er nun IMMER als Ergebnis 4.5 Stunden.
Ich selbst überblicke nicht genau, wo mein Fehler liegt und bin mir vor allem nicht sicher, ob ich das mit dem Parsen richtig gemacht habe. Habe mir das selbst aus einigem Mal googlen erschlossen, kann also durchaus falsch sein...
Kann mir hierbei jemand helfen?
Gruß, MM
PS: Ich habe praktisch keinerlei Vorkenntnisse in Java, aber kann ein wenig Delphi. Java allerdings ist schon recht anders und gefällt mir bisher eigentlich nicht so besonders...