24小时制到12小时制转换 - 大括号配对问题

时间:2017-08-28 20:14:35

标签: java curly-braces jgrasp

我是初学者学习Java,我试图编写程序将用户输入的时间转换为12小时,或者如果以12小时时间格式提供,则转换到24小时的时间。

我已经编写了一些代码,这些代码在我逐步测试时起作用,直到我尝试修改以将时间从12小时转换为24小时格式。

我的代码如下。我为冗余和效率低下的技术道歉,但是嘿,我必须从某个地方开始。我相信我的问题在于分离代码块,因为我正在尝试使用主if语句来测试输入是否以' m' (即如果它在输入的12小时或24小时时间内),然后是几个嵌套的ifelseelse 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");
 }

 }      
 }
 }

1 个答案:

答案 0 :(得分:2)

真正的问题是你没有正确缩进你的代码。一旦你这样做,你就会更容易自己发现问题。

我从快速查看代码中发现了一些错误:

  1. 您缺少一些括号。 (同样,适当的缩进也会对此有所帮助。)

    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语句之前。要么elseelse if语句的顺序混淆了,要么在}语句之后缺少结束括号else,{{1部分真的应该是前一个块的一部分。

    您还错过了代码末尾的结束括号。

  2. 变量不能以数字开头。您else if24hournum等所有变量均无效。

  3. 在以下行24hour中,您使用int 24hournum = Integer.parseint(24hour);代替parseint

  4. 我的建议是:

    1. 正确缩进所有代码。大多数IDE都带有快捷方式,可以轻松完成此任务。
    2. 阅读并研究控制台中显示的所有错误和警告消息。
    3. 调试并逐步执行代码,找出导致错误的确切部分。