我是初学者学习Java,我试图编写程序将用户输入的时间转换为12小时,或者如果以12小时时间格式提供,则转换到24小时的时间。
我已经编写了一些代码,这些代码在我逐步测试时起作用,直到我尝试修改以将时间从12小时转换为24小时格式。
我的代码如下。我为冗余和效率低下的技术道歉,但是嘿,我必须从某个地方开始。我相信我的问题在于分离代码块,因为我正在尝试使用主if
语句来测试输入是否以' m' (即如果它在输入的12小时或24小时时间内),然后是几个嵌套的if
,else
和else if
语句。
import java.util.Scanner;
public class TimeConverter
{
public static void main ( String [] args )
{
Scanner ask_user = new Scanner (System.in);
System.out.println("Enter a time ([h]h:mm [am|pm]): ");
String enter_time = ask_user.nextLine ();
String am_pm = enter_time.substring(6);
String am = ("am");
String pm = ("pm");
if (enter_time.substring(7).equals("m"))
{
if (am_pm.equals(am))
{
String am_12 = enter_time.substring(0, 2);
String mins = enter_time.substring(2,5);
int am_12i = Integer.parseInt(am_12);
if (am_12i != 12)
{
String am_sub = enter_time.substring(0,5);
System.out.println(am_sub);
}
else if (am_12i == 12)
{
System.out.println("00" + mins);
}
}
else if (am_pm.equals(pm))
{
if (enter_time.equals("12:00 pm"))
{
System.out.println(enter_time);
}
else
{
String minutes = enter_time.substring(2,5);
String pm_add = enter_time.substring(0,2);
int pm_add_i = Integer.parseInt(pm_add);
int pm_add_fin = pm_add_i + 12;
String pm_add_finS = Integer.toString(pm_add_fin);
String converted_pmtime = (pm_add_finS + minutes);
System.out.println(converted_pmtime);
}
else if (enter_time.substring(7) != ("m"))
{
String 24hour = enter_time.substring(0,2);
String 12hourmins = enter_time.substring(2,7);
int 24hournum = Integer.parseint(24hour);
if (enter_time.equals("00:00"))
{
System.out.println("12" + 12hourmins);
}
else if (24hournum <= 11)
{
String hour = Integer.toString(24hournum);
String minute = enter_time.substring(2,4);
String fin = (hour + minute + "am");
}
}
}
}
答案 0 :(得分:2)
真正的问题是你没有正确缩进你的代码。一旦你这样做,你就会更容易自己发现问题。
我从快速查看代码中发现了一些错误:
您缺少一些括号。 (同样,适当的缩进也会对此有所帮助。)
if (enter_time.equals("12:00 pm"))
{
System.out.println(enter_time);
}
else
{
String minutes = enter_time.substring(2,5);
String pm_add = enter_time.substring(0,2);
int pm_add_i = Integer.parseInt(pm_add);
int pm_add_fin = pm_add_i + 12;
String pm_add_finS = Integer.toString(pm_add_fin);
String converted_pmtime = (pm_add_finS + minutes);
System.out.println(converted_pmtime);
}
else if (enter_time.substring(7) != ("m"))
{
您有if
声明。然后使用else
语句结束块。然而,然后在else if
之后有else
语句。 else if
语句需要放在if
语句之后和else
语句之前。要么else
和else if
语句的顺序混淆了,要么在}
语句之后缺少结束括号else
,{{1部分真的应该是前一个块的一部分。
您还错过了代码末尾的结束括号。
变量不能以数字开头。您else if
和24hournum
等所有变量均无效。
在以下行24hour
中,您使用int 24hournum = Integer.parseint(24hour);
代替parseint
。
我的建议是: