M
Matze83
Gast
hi leute,
ich verzweifel so langsam und hoffe ihr könnt mir weiterhelfen.
Die war die Aufgabe
Schreiben sie eine Klasse bla.bla deren Objekte eine Zeitangabe in Stunden, Minuten und Sekunden repräsentieren. Diese Zeitangabe kann intern als Gesamtzeit in Sekunden oder in den drei angegebenen Bestandteilen in Instanzvariablen gespeichert sein. Es soll nicht möglich sein, von außehalb der Klasse direkt auf die gespeicherte Zeitangabe zuzugreifen. Warum ist die gemeinsame Verwendung beider Darstellung schlecht (sogar ein Programmierfehler)?!
Gesamtzeit in Sekunden(ganze Zahl, kann größer als 60 ein)
oder durch angabe der einzelnen Zeitbestandteile ( drei ganze Zahlen)
oder durch Angabe einer anderen Zeit, deren Wert für Zeit übernommen wird)
, welche wir gerade in der Uni machen müssen. Da ich aber Krankheitsbedingt einige Tage gefehlt habe, hab ich die Funktionen und Ausgaben der Konstruktoren noch nicht so ganz verstanden. Ich komm einfach nicht weiter und blicke selber nicht mehr richtig durch was ich da eigentlich geschrieben habe. Ich habe mittlerweile so viel wieder geändert, dass es immer unübersichtlicher wird. Die Rechnungen stimmen beispielsweise irgendwie nicht oder werden komisch ausgeführt. Ich möchte nicht, dass ihr mir die Aufgabe löst oder fertigprogrammiert
so ist das nicht gemeint ... ich brauch nur ein paar Schläge auf den Hinterkopf und ein bisschen Hilfe wo meine Fehler liegen, damit ich weiterkomme....
Danke
ich verzweifel so langsam und hoffe ihr könnt mir weiterhelfen.
Die war die Aufgabe
Schreiben sie eine Klasse bla.bla deren Objekte eine Zeitangabe in Stunden, Minuten und Sekunden repräsentieren. Diese Zeitangabe kann intern als Gesamtzeit in Sekunden oder in den drei angegebenen Bestandteilen in Instanzvariablen gespeichert sein. Es soll nicht möglich sein, von außehalb der Klasse direkt auf die gespeicherte Zeitangabe zuzugreifen. Warum ist die gemeinsame Verwendung beider Darstellung schlecht (sogar ein Programmierfehler)?!
Gesamtzeit in Sekunden(ganze Zahl, kann größer als 60 ein)
oder durch angabe der einzelnen Zeitbestandteile ( drei ganze Zahlen)
oder durch Angabe einer anderen Zeit, deren Wert für Zeit übernommen wird)
, welche wir gerade in der Uni machen müssen. Da ich aber Krankheitsbedingt einige Tage gefehlt habe, hab ich die Funktionen und Ausgaben der Konstruktoren noch nicht so ganz verstanden. Ich komm einfach nicht weiter und blicke selber nicht mehr richtig durch was ich da eigentlich geschrieben habe. Ich habe mittlerweile so viel wieder geändert, dass es immer unübersichtlicher wird. Die Rechnungen stimmen beispielsweise irgendwie nicht oder werden komisch ausgeführt. Ich möchte nicht, dass ihr mir die Aufgabe löst oder fertigprogrammiert
Danke
Code:
import java.io.*;
import java.util.*;
public class Zeit {
public static PrintWriter out = new PrintWriter (System.out, true);
public static Scanner in = new Scanner (System.in);
public int sek;
public int min;
public int std;
public int zeit;
public Zeit(int sek, int min, int std){
this.sek = sek;
this.min = min;
this.std = std;
}
public Zeit(Zeit other){
this.sek = other.sek;
this.min = other.min;
this.std = other.std;
}
public Zeit(int zeit){
this.std = rechneStd(zeit);
this.min = rechneMin(zeit);
this.sek = rechneSek(zeit);
}
private int rechneSek(int zeit) {
return zeit - rechneStd(zeit) * 3600 - this.min * 60;
}
private int rechneMin(int zeit) {
return zeit - rechneStd(zeit);
}
private int rechneStd(int zeit) {
return zeit / 3600;
}
public int getSek() {
return sek;
}
public int getMin() {
return min;
}
public int getStd() {
return std;
}
public void add (Zeit other){
int gesamtZeit = timeToSecond(this.std, this.min, this.sek)
+ timeToSecond(this.std, this.min, this.sek);
this.std = rechneStd(gesamtZeit);
this.min = rechneMin(gesamtZeit);
this.sek = rechneSek (gesamtZeit);
}
public void add (int zeit){
int gesamtZeit = this.std * 3600 + zeit + this.min * 60 + this.sek;
this.std = rechneStd(gesamtZeit);
this.min = rechneMin(gesamtZeit);
this.sek = rechneSek(gesamtZeit);
}
private static int timeToSecond(int hour, int minute, int second) {
return second + minute * 60 + hour * 3600;
}
public static String printTime(Zeit other){
return "" + other.getStd() + "" + other.getMin() + "" + other.getSek() + "";
}
public static void main (String[]args){
out.println("Matthias Enter - Aufgabe 4 - 1) a4.v01.Zeit");
out.println();
programmAuswahl();
}
private static void programmAuswahl() {
out.println("Geamtzeit: 'eins' Zeitbestandteile: 'zwei' Andere Zeit: 'drei': ");
String eingabe = in.next();
if (eingabe.equals("eins")){
out.println("Bitte geben Sie die Gesamtzeit in Sekunden an: ");
int second = in.nextInt();
Zeit s = new Zeit (second);
out.println("Objekt nach dem erstellen:" + printTime(s));
}
else if (eingabe.equals("zwei")){
out.println("Bitte geben Sie die einzelnen Zeitbestandteile ein: ");
out.println("");
out.println("Bitte geben sie die Sekunden ein: ");
int sek = in.nextInt();
out.println("Bitte geben sie die Minuten ein: ");
int min = in.nextInt();
out.println("Bitte geben Sie die Stunden ein: ");
int std = in.nextInt();
Zeit stdMinSek = new Zeit (std, min, sek);
out.println("Objekt nach erstellen:" + printTime(stdMinSek));
stdMinSek.add(other);
programmAuswahl();
}
else if (eingabe.equals("drei")){
out.println("Bitte gebene Sie eine andere Zeit ein: ");
}
else{
out.println("Sie haben eine falsche Eingabe gemacht. Bitte waehlen Sie erneut aus: ");
programmAuswahl();
}
}
}