konvertieren Sie eine 4-stellige Militär-Zeit in der standard-12-Stunden-Zeit-format
, Was ich versuche zu tun:
Ich versuche zu konvertieren, eine 4-stellige Militär-Zeit in der standard-12-Stunden-Zeit-format, die mit einem Doppelpunkt und einem zusätzlichen PM oder BIN, ohne die Verwendung von Import nichts, bevor mein code (ich mache eine Methode, die erfordert nichts anderes als java-101-Techniken).
Meine situation:
Habe ich milTime, die ich manuell ändern, um für jetzt, jedes mal, wenn ich es(wie erklärt, oben, derzeit 1100, -), bis ich konvertieren es in eine Methode und legt die Zuordnung, in dem es in milTime, und wieder milTimeString für das main-Programm zu drucken. Ich bin derzeit mit BlueJ als IDE (ich bin mir nicht sicher, ob das ist die beste zu verwenden?)
Beispiel von input-und output -:
Wenn 0056 gegeben wurden, ich würde zurückkehren müssen, 12:56am.
Wenn 1125 gegeben wurden, würde ich zurück 11:25am.
Wenn 2359 gegeben wurden, ich würde zurückkehren müssen 11:59 Uhr.
Probleme, ich brauche Hilfe mit
- Wenn ich ausführen, mein am /pm boolean versagt irgendwo und es immer Ausgängen Uhr, egal ob ich Eingang 11:24, oder 23:24.
- Es ist wohl offensichtlich, dass ich arbeite zu hart, um die Ausgabe zu erzeugen, aber ich weiß nicht einen einfacheren Weg (Andere als Import etwas zu tun, es für mir, die ich nicht tun wollen).
Ich demütig Unterwerfen, um jede Kritik an meinem aufgeblähten aktuellen code, und alle Korrekturen in meine weitschweifige Anfrage. Ich habe gesucht, um für Alternative Antworten, und alles importieren oder wissen über mich. Vielen Dank für Ihre Zeit so weit, und danke im Voraus jeder.
public class timeTest
{
public static void main(String []args)
{
/*Declare my variables*/
int milTime = 2400;
String timeString = "";
boolean pm;
/*determine AM or PM and convert over 1200 into a clock's digits */
if (milTime >1259)
{
if (milTime <1200)
{
pm = false;
}
else
{
pm = true;
}
milTime = (milTime - 1200);
}
else
{
}
/*figure out my digits*/
int fourthDigit = milTime%10;
milTime = milTime/10;
int thirdDigit = milTime%10;
milTime = milTime/10;
int secondDigit = milTime%10;
milTime = milTime/10;
int firstDigit = milTime%10;
/*build each side of the colon*/
String hoursString = thirdDigit + "" + fourthDigit;
String minutesString = firstDigit + "" + secondDigit;
/*determine if the first digit is zero and if so, omit it*/
if (firstDigit == 0 )
{
minutesString = "" + secondDigit;
}
else
{
}
if (secondDigit == 0)
{
minutesString = "12";
}
else
{
}
/*build the total string and return the result with AM or PM based on conditional boolean.*/
if (pm = true)
{
timeString = (minutesString + ':' + hoursString + "pm");
}
else
{
}
if (pm = false)
{
timeString = (minutesString + ':' + hoursString + "am");
}
else
{
}
System.out.println(timeString);
}
}
InformationsquelleAutor Crawsome | 2013-12-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem ist, Schreien, dass Sie sollten mit Ihrem eigenen benutzerdefinierten data formatter. Ich verwende gerne die Joda Time Bibliothek und seine DateTime - Klasse anstelle des eingebauten Java - Datum und Kalender Klassen. Statt also " = SimpleDateFormat, ich empfehlen, dass Sie eine DateTimeFormat zu erstellen DateTimeFormatter, die Sie dann verwenden, um zu konvertieren den String in eine DateTime. Sie benötigen ein DateTimeFormatter-für jeden Eingang und Ausgang. Zum Beispiel:
Probieren Sie es aus!
InformationsquelleAutor ecbrodie
Können Sie dies viel, viel einfacher, mit einem cleveren string-Konvertierung und - " = SimpleDateFormat, hier ist das Beispiel, sondern analysiert in zwei Linien:
InformationsquelleAutor Josiah Hester
Ein einzelnes Gleichheitszeichen ist eine Zuweisung. Sie wollen ein Vergleich:
Diese könnte auch geschrieben werden, mehr idiomatically:
Das ist das Hauptproblem. Ein anderes ist Ihre Logik für die Einstellung
pm
. Sie brauchen nur einen einzigenif
- Anweisung, mit der Zeile subtrahieren 1200 im Innern derpm = true
block.Gibt es ein paar andere bugs, werde ich verlassen zu Ihnen. Ich vertraue diesen Korrekturen erhalten Sie ein bisschen weiter, mindestens.
InformationsquelleAutor John Kugelman
InformationsquelleAutor Jeffery Brannon