Guten Abend,
da ich absoluter Java Anfänger wird man vielleicht in meinem geposteten Code sehen.
Ich hatte erst ein paar wenige Stunden Unterricht.
Das Programm funktioniert wie es soll obwohl es sicher eine elegantere Lösung gibt.
Mir sind ein paar Dinge unklar.
Erstens: Ja / Nein Abfrage
Sie funktioniert bis zu einem gewissem Grad.
Wenn ich einen anderen Buchstaben verwende wie j oder n, wird es so behandelt wie wenn ich n drücken würde. Das Programm wird beendet.
Das will ich natürlich nicht. Im derzeitigen Code habe ich auch noch keine Bedinungen für dieses Problem geschaffen weil ich ehrlich gesagt nicht weiß wie ich das mache.
Zweitens: Wenn man aufgefordert wird eine Zahl einzugeben und stattdessen einen Buchstaben verwendet bricht das Programm ab und schreibt mir eine InputMismatchException hin.
Wäre jemand so nett und könnte mir das erklären.
Und für Verbesserungsvorschläge wäre ich auch dankbar.
Wie gesagt ich hatte bisher nicht soviele Unterrichtseinheiten in der Schule und der unten angeführte Code ist nur mein erster Versuch selbstständig etwas zu schaffen.
Liebe Grüße
fx202
PS: ich benutze Netbeans 8.1
da ich absoluter Java Anfänger wird man vielleicht in meinem geposteten Code sehen.
Ich hatte erst ein paar wenige Stunden Unterricht.
Das Programm funktioniert wie es soll obwohl es sicher eine elegantere Lösung gibt.
Mir sind ein paar Dinge unklar.
Erstens: Ja / Nein Abfrage
Sie funktioniert bis zu einem gewissem Grad.
Wenn ich einen anderen Buchstaben verwende wie j oder n, wird es so behandelt wie wenn ich n drücken würde. Das Programm wird beendet.
Das will ich natürlich nicht. Im derzeitigen Code habe ich auch noch keine Bedinungen für dieses Problem geschaffen weil ich ehrlich gesagt nicht weiß wie ich das mache.
Zweitens: Wenn man aufgefordert wird eine Zahl einzugeben und stattdessen einen Buchstaben verwendet bricht das Programm ab und schreibt mir eine InputMismatchException hin.
Wäre jemand so nett und könnte mir das erklären.
Und für Verbesserungsvorschläge wäre ich auch dankbar.
Wie gesagt ich hatte bisher nicht soviele Unterrichtseinheiten in der Schule und der unten angeführte Code ist nur mein erster Versuch selbstständig etwas zu schaffen.
Liebe Grüße
fx202
PS: ich benutze Netbeans 8.1
Java:
package zeit;
import java.util.Calendar;
import java.util.Scanner;
/**
*
* @author fx202
*
* Das ist ein Zeitberechnungsprogamm um herauszufinden wann man nach Hause
* gehen darf. Die Sollzeiten richten sich nach den Firmen Zeiten die man da
* sein muss um die sogenannten V-Tage einzuarbeiten Für Montag bis Freitag
* gilt: 8 Stunden und 15 Minuten Für Freitag gilt: 5 Stunden und 45 Minuten
* Die reguläre Pause von 30 Minuten wird bei nicht ausstempeln automatisch
* abgezogen Wenn man länger als 30 Minuten abwesend ist wird diese Zeit zu den
* 30 Minuten dazugezählt. Stempelt man unter 30 Minuten wieder ein werden nur
* 30 Minuten Pause verrechnet
*/
public class Zeit {
static Scanner input = new Scanner(System.in); //Eingabe
static int STUNDEN; // Die Stunden die der User eingibt
static int MINUTEN; // Die Minuten die der User eingibt
static int MODOH = 480; // Die 8 Stunden Sollzeit von Montag bis Donnerstag
static int FRH = 300; // die 5 Stunden Sollzeit am Freitag
static int MODOM = 45; // Die 45 minuten Sollzeit von Montag bis Donnerstag inklusive 30 Minuten Pause
static int FRHM = 45; // Die 45 Minuten Sollzeit am Freitag ohne Pause
static int ZEITTENHOURS = 600; // Der Minutenwert für 10 Stunden
static String pause; // Die Pausenzeit die der User eingibt
static int MINUTENP; // Der Wert der Pausenzeit
static int ISTZEITH; // Die berechneten Stunden
static int ISTZEITM; // die berechneten Minuten
static String programm;
public static void main(String[] args) {
System.out.println("Herzlich Willkommen zu der Zeitberechnung!"); // Eine Willkommensmeldung
Calendar cal = Calendar.getInstance(); // Datumsaufruf
System.out.println("Heute ist der " + cal.get(Calendar.DAY_OF_MONTH) // Der derzeitige Tag
+ "." + (cal.get(Calendar.MONTH) + 1) + "."
+ // das derzeitige Monat und Jahr
cal.get(Calendar.YEAR));
System.out.println("Es ist genau " + (cal.get(Calendar.HOUR_OF_DAY)) // Die derzeitige Uhrzeit
+ ":" + (cal.get(Calendar.MINUTE) + " Uhr."));
System.out.println("Es ist die " + cal.get(Calendar.WEEK_OF_YEAR) // Die derzeitige Kalender Woche
+ ". Kalenderwoche.");
do {
zeitEingabeStunden(); // Die Methode mit der die Stunden eingeben werden
zeitEingabeMinuten(); // Die Methode mit der die Minuten eingeben werden
String Zeit = String.format("%02d:%02d", STUNDEN, MINUTEN); // Eine Zeitformatierung
System.out.println("Du bist um " + Zeit + " Uhr erschienen.");
System.out.println(); // Die Eingebene Uhrzeit im richtigen Format
pause(); // Die Methode mit der die Pause abgefragt wird
System.out.println();
montagBisDonnerstag(); // Die Methode mit der die Zeit berechnent wird fuer Montag bis Donnerstag
System.out.println();
freitag(); // Die Methode mit der die Zeit fuer Freitag berechnet wird
System.out.println();
System.out.println("Nochmal ausfuehren (j/n)?");
programm = input.next();
if (programm.equalsIgnoreCase("n")) {
System.out.println("Baba!");
break;
}
if (programm.equalsIgnoreCase("j")) {
System.out.println("ok, nochmal");
}
} while (programm.equalsIgnoreCase("j") || programm.equalsIgnoreCase("n"));
}
public static int zeitEingabeStunden() {
do { // Eine do-while Schleife um eine korrekte Stundenzeit in Int zu erhalten
System.out.println("Wann bist erschienen?");
STUNDEN = input.nextInt();
if (STUNDEN < 0) {
System.out.println("Falsches Stundenformat!");
} else if (STUNDEN > 23) {
System.out.println("hmm, bloed. Der Tag endet mit 23:59.");
} else {
break;
}
} while (STUNDEN >= 0 || STUNDEN <= 23);
return STUNDEN; // Wenn die Eingabe korrekt ist wird die Stundenanzahl zurueckgegeben
}
public static int zeitEingabeMinuten() {
do { // Eine do-while Schleife um eine korrekte Minutenzeit in int zu erhalten
System.out.println("Bitte die Minuten eingeben.");
MINUTEN = input.nextInt();
if (MINUTEN < 0) {
System.out.println("Es gibt nur 60 Minuten.");
} else if (MINUTEN > 59) {
System.out.println("Hat dir niemand die Uhrzeit erklaert?");
} else {
break;
}
} while (MINUTEN >= 0 || MINUTEN <= 59);
return MINUTEN; // Wenn die Eingabe korrekt ist wird die Minutenanzahl zurueckgegeben
}
public static int pause() {
do { // Eine do-while Schleife um die Pausenzeiten abzufragen
// sollten diese unter 30 Minuten liegen wird sie ignoriert
System.out.println("Hast du Pause gemacht? (j/n)");
pause = input.next();
if (pause.matches("n")) {
System.out.println("Es wird automatisch eine halbe Stunde abgezogen.");
break;
}
if (pause.matches("j")) {
System.out.println("Wie lange (Eingabe in Minuten)?");
MINUTENP = input.nextInt();
if (MINUTENP < 30) {
System.out.println("Pausen zwischen 0 - 30min werden ignoriert.");
MINUTENP = 0;
} else if (MINUTENP > 30) {
MINUTENP = MINUTENP - 30;
}
}
} while (pause.equalsIgnoreCase("n") && pause.equalsIgnoreCase("j"));
return MINUTENP;
}
public static void montagBisDonnerstag() {
ISTZEITH = ((STUNDEN * 60) + (MODOH));
ISTZEITH = ISTZEITH / 60;
if (ISTZEITH > 23) {
ISTZEITH = ISTZEITH - 24;
}
ISTZEITM = ((MINUTEN) + MODOM + MINUTENP);
do {
if (ISTZEITM > 59) {
ISTZEITH = ISTZEITH + 1;
}
if (ISTZEITM > 59) {
ISTZEITM = ISTZEITM - 60;
}
} while (ISTZEITM > 59);
String Minutenmodo = String.format("%02d", ISTZEITM);
String Stundenmodo = String.format("%02d", ISTZEITH);
System.out.println("Du darfst von Montag bis Donnerstag den Arbeitsplatz fruehestens um " + Stundenmodo + ":" + Minutenmodo + "Uhr verlassen.");
System.out.println();
ISTZEITH = ((STUNDEN * 60) + (ZEITTENHOURS));
ISTZEITH = ISTZEITH / 60;
if (ISTZEITH > 23) {
ISTZEITH = ISTZEITH - 24;
}
ISTZEITM = ((MINUTEN) + MODOM + MINUTENP);
do {
if (ISTZEITM > 59) {
ISTZEITH = ISTZEITH + 1;
}
if (ISTZEITM > 59) {
ISTZEITM = ISTZEITM - 60;
}
} while (ISTZEITM > 59);
String Minutenmodo10h = String.format("%02d", ISTZEITM);
String Stundenmodo10h = String.format("%02d", ISTZEITH);
System.out.println("Die taegliche Arbeitzeit von maximal 10 Stunden wird ab " + Stundenmodo10h + ":" + Minutenmodo10h + "Uhr ueberschritten.");
}
public static void freitag() {
ISTZEITH = ((STUNDEN * 60) + (FRH));
ISTZEITH = ISTZEITH / 60;
if (ISTZEITH > 23) {
ISTZEITH = ISTZEITH - 24;
}
if (MINUTENP <= 30) {
MINUTENP = 0;
}
ISTZEITM = ((MINUTEN) + FRHM + MINUTENP);
do {
if (ISTZEITM > 59) {
ISTZEITH = ISTZEITH + 1;
}
if (ISTZEITM > 59) {
ISTZEITM = ISTZEITM - 60;
}
} while (ISTZEITM > 59);
String Minutenfr = String.format("%02d", ISTZEITM);
String Stundenfr = String.format("%02d", ISTZEITH);
System.out.println("Du darfst am Freitag fruehestens um " + Stundenfr + ":" + Minutenfr + "Uhr gehen.");
}
}