Sekundenberechnungsumkehrung

T

Tsag2010

Gast
Kehre das vorhergehende Programm so um, dass aus der Gesamtzahl
der Sekunden wieder die ursprünglichen Werte von Jahren, Monaten, Tagen, Stunden,
Minuten und Sekunden berechnet und ausgeben werden.
Das vrohergehende Programm ist:

Java:
public static void main(String[] args) {
		int y=1; 
		int mo = 3;
		int t = 10;
		long h = 6;
		long min = 42;
		long s = 15;
		int moGesamt= mo + y * 12; 
		int tGesamt = t + moGesamt * 30; 
		long hGesamt= h + tGesamt * 24; 
		long minGesamt = min + hGesamt * 60; 
		long sGesamt = s + minGesamt * 60;
		System.out.println(sGesamt);
	}
}

hm, also ich hab das so probiert, aber da sind natürlich Fehler drinnen, da ja Restsekunden usw. überbleiben =/ Muss ich dafür irgendwelche Bedingungen hinschreiben, bzw. wie tu ich das =/

Java:
public static void main(String[] args) {
		long sGesamt = 3601
		long s=sGesamt; 
		int min = s/60;
		int h = min/60;
		long t = h/24;
		long mo = t/30;
		long y = mo/12;
		System.out.println(y);
	}

}

Bitte um Hilfe!!
 
S

SlaterB

Gast
nicht unbedingt falsch, so kann man mit Ergänzungen auch zum Ziel kommen

Java:
public class Test
{
    public static void main(String[] args)
    {
        long sGesamt = 4622;
        long s = sGesamt;
        long min = s / 60;
        s -= min * 60;
        System.out.println("sekunden: " + s + ", min: " + min);
    }
}
so hat man die Sekunden schon fertig gegeben und die restliche Komplettanzahl Minuten, die man ähnlich weiter rechnen muss,
 
T

Tsag2010

Gast
Ich hab jetzt begonnen es nach deinem Schema weiter zu machen, bitte sag mir ob es bis jetzt stimmt oder ob ich das falsch übernommen hab... und was bedeutet der Befehl s-= ... ???
Hm und wie könnte ich das ganze mit Jahren andersrum beginnen, wenn ich doch nur die gesamten Sekunden gegeben hab =/

Java:
 public static void main(String[] args) {
		long sGesamt = 3601
		long s=sGesamt; 
		int min = s/60;
		s -= min * 60;
		int h = min/60;
		min -= h * 60
		long t = h/24;
		h -= t * 24
		long mo = t/30;
		t -= mo * 30
		long y = mo/12;
		mo -= y * 12;
		System.out.println("sekunden: " + s +", min: " + min +", t: "+ t +" ...);
	}
}
 
S

SlaterB

Gast
s -=

<->

s = s -

----------

long factor = 60l * 60 * .. * 12; // alle Umrechnungen
years = sec / factor;
sec -= years * factor;

factor /= 12; // 12 rausnehmen

months..
 

Foermchen82

Top Contributor
Java:
public static void main(String[] args) {
        int y=1; 
        int mo = 3;
        int t = 10;
        long h = 6;
        long min = 42;
        long s = 15;
        int moGesamt= mo + y * 12; 
        int tGesamt = t + moGesamt * 30; 
        long hGesamt= h + tGesamt * 24; 
        long minGesamt = min + hGesamt * 60; 
        long sGesamt = s + minGesamt * 60;
        System.out.println(sGesamt);
        
        long rest = sGesamt % 31104000;
        y = (int)(sGesamt -  rest)/ 31104000;
        System.out.println(y);
        
        sGesamt = sGesamt - 31104000 * y;
        rest = rest % 2592000;
        mo = (int)(sGesamt -  rest) /2592000;
        System.out.println(mo);
        
        sGesamt = sGesamt - 2592000 * mo;
        rest = sGesamt % 86400;
        t = (int)(sGesamt -  rest) /86400;
        System.out.println(t);
        
        sGesamt = sGesamt - 86400 * t;
        rest = sGesamt % 3600;
        h = (sGesamt - rest) / 3600;
        System.out.println(h);
        
        sGesamt = sGesamt - 3600*h;
        rest = sGesamt % 60;
        min = (sGesamt - rest) / 60;
        System.out.println(min);
        
        s = sGesamt - 60 * min;
        System.out.println(s);
    }
 
T

Tsag2010

Gast
Es tut mir wirklich leid, aber ich verstehe nicht auf was

"long factor = 60l * 60 * .. * 12; // alle Umrechnungen
years = sec / factor;
sec -= years * factor;

factor /= 12; // 12 rausnehmen

months.. "

die Antwort ist =/

Was muss ich denn dann in der letzten {} nach dem println eingeben? Was macht der Befehl " + s + " ??
 
S

SlaterB

Gast
du hattest drei Fragen,
- ob dein Code so richtig war,
eine Antwort darauf sollte erkennbar sein falls gegeben

- was s -= bedeutet, da nehme ich an dass sehr erkennbar ist wo ich dazu geantwortet habe

- und als dritte Frage wie es andersrum geht, mit Jahr zuerst,
und ich poste neuen Code wo eine Variable year direkt aus Sekunden errechnet wird, hmm

siehe natürlich auch das vollständigere Beispiel von Foermchen82

----

> Was macht der Befehl " + s + " ??

Strings kann man beliebig zusammenbauen: " test "+variable+" anderer Text " usw
 
T

Tsag2010

Gast
Oh, danke, jetzt versteh ich! Also kann ich die Ausgabe von Foermchen durch diese " + " zusammensetzen?!
 
S

SlaterB

Gast
erst testen, dann fragen
und ich bau gleich ne Sperre ein dass du nur einmal alle halbe Stunde antworten kannst ;)
(gibts leider nicht)
 
T

Tsag2010

Gast
aaaaaaah ich habs getestet, aber es geht nicht =( =( =( =(
Was ist denn jetzt schon wieder falsch?????? =°(

Java:
public class Sekundenberechnungsumkehrung {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		long sGesamt = 39768135
		long rest = sGesamt % 31104000;
        y = (int)(sGesamt -  rest)/ 31104000;
        
        sGesamt = sGesamt - 31104000 * y;
        rest = rest % 2592000;
        mo = (int)(sGesamt -  rest) /2592000;
        
        sGesamt = sGesamt - 2592000 * mo;
        rest = sGesamt % 86400;
        t = (int)(sGesamt -  rest) /86400;
        
        sGesamt = sGesamt - 86400 * t;
        rest = sGesamt % 3600;
        h = (sGesamt - rest) / 3600;
        
        sGesamt = sGesamt - 3600*h;
        rest = sGesamt % 60;
        min = (sGesamt - rest) / 60;
        
        s = sGesamt - 60 * min;
		System.out.println("sekunden: " + s +", minuten: " + min +", stunden: " + h + "tage: "+ t +", monate: " + mo + ", jahr: " + y + "");
	}
}

das gibts ja nicht..=(
 
S

SlaterB

Gast
keine Fehlermeldungen?,
keine Lust das Programm Zeile für Zeile durchzugehen und auf einfachste Java-Regeln zu prüfen?

also ich habe auch keine Lust, den menschlichen Compiler zu spielen..
 
T

Tsag2010

Gast
oke danke, und ja ich bin die Fehlermeldungen durchgegangen, aber da ich zum ersten mal in meinem leben irgendwas mit Java zutun habe, finde ich leider auch die ganz offensichtlichen Fehler nicht, weil ich dabei bin zu lernen, worum es bei java überhaupt geht..
 
S

SlaterB

Gast
mit Programmieren hat das nichts zu tun,
auch mit Legosteinen würde man erstmal versuchen, 2, 3 zusammenzusetzen und schauen ob alles hält,

ergo teste doch das Programm zu kürzen, erstmal nur eine Zeile, dann 2, 3, 4, wann kommt die erste Fehlermeldung?
und die Zeile dann ganz genau anschauen

bezieht sich natürlich auf den Inhalt etwa der main-Methode, die schließenden Klammern am Ende besser nicht weglassen
 

Dude123

Mitglied
dann mach ich das mal ^^

in zeile 7 fehlt ein ";"
in zeile 8 benutzt du die variable "y" , diese hast du vorher aber noch nicht erzeugt
das gleiche in zeile 14 mit "mo"
auch in zeile 19 mit "t"
gleiche in zeile 24 mit "h" (die variable darf dann aber nicht von datentyp "int" sein, sondern "double")
zeile 29 ist das "min" nicht bekannt (bitte auch mit "double")
zeile 32 ist das "s" nicht bekannt (auch double bitte)


viel spaß beim korrigieren ^^ bin jetzt nur syntax mäßig und so durchgegangen.
keine ahnung ob deine rechnung stimmen wird.

vielleicht solltest du doch erstmal bisschen über JAVA lesen? allgemeine sachen und so

gruß
 
T

Tsag2010

Gast
Vielen Dank, mein Fehler war, dass ich dachte, dass das vorhin gepostete richtig war, es kopiert habe und nur in meinen dazugeschriebenen Sachen die Fehler gesucht habe... und ich les sowieso in meinem Skriptum nur ohne Beispiele und konkrete Anwendung ist das ganze für mich ziemlich schwer nachzuvollziehen.. Aber jetzt hab ichs soweit verstanden :) Vielen Dank nochmal!
 

Oben