2017-08-28 128 views
-3

我是一名初学者学习Java的人,我试图编写一个程序将用户输入的时间转换为12小时的时间,或者如果它是以12小时时间格式提供,将其转换为24小时时间。24小时制转换为12小时制 - 大括号配对问题

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

我的代码如下。我为裁员和非常低效的技术表示歉意,但是,嘿,我必须从某个地方开始。我相信我的问题在于分隔代码块,因为我试图使用主要的if语句来测试输入是否以'm'结尾(即,如果它在输入时在12小时或24小时内),然后几个嵌套if,elseelse 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"); 
} 

}  
} 
} 
+2

学习缩进你的代码。它会**真的帮助你 – litelite

+1

你错过了几个大括号和变量名不能包含数字(24小时是一个无效的变量名)。从那些开始。 –

+1

不要使用==比较字符串。 “else if(enter_time.substring(7)!=(“m”))“在其他情况下实际上是多余的,但如果您坚持,请将!=替换为!equals –

回答

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声明和else if声明部分实际上应该是前一个块的一部分后缺少结尾括号}

    您的代码最后还缺少一个右括号。

  2. 变量不能以数字开头。像24hournum24hour这样的所有变量都是无效的。

  3. 在以下行int 24hournum = Integer.parseint(24hour);中,您使用parseint而不是parseInt

我的建议是:

  1. 正确缩进所有代码。大多数IDE都带有快捷方式来轻松完成此操作。
  2. 阅读并研究控制台中显示的所有错误和警告消息。
  3. 调试并逐步通过您的代码来查找导致错误的部分。
相关问题