2017-08-28 13 views
-3

私は初心者のJavaを学習しています。ユーザ入力時間を12時間に変換するプログラムを作成しようとしています。 12時間形式で提供され、24時間に変換されます。24時間から12時間までのクロック変換 - 中かっこのペア設定の問題

私は12時間から24時間形式に時間を変換するように修正するまで、私はそれを段階的にテストしたようにいくつかのコードを書いています。

私のコードは以下の通りです。私は冗長と非常に非効率なテクニックをお詫びしますが、ちょっと、私はどこかで始めなければなりません。私は入力が「m」で終わるかどうか(つまり入力時に12時間または24時間であるかどうか)をテストするためにプライマリifステートメントを作成しようとしているので、 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"); 
} 

}  
} 
} 
+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に続いてelse ifというステートメントがあります。 else ifステートメントは、ifステートメントの後で、elseステートメントの前に置く必要があります。 elseステートメントとelse ifステートメントの順序が混在しているか、またはelseステートメントの後に閉じ括弧}がなくなり、else if部分が実際に前のブロックの一部であると考えられます。

    また、コードの最後に閉じ括弧もありません。

  2. 変数は数字で始めることはできません。 24hournum24hourなどのすべての変数は無効です。

  3. int 24hournum = Integer.parseint(24hour);の行では、parseIntの代わりにparseintを使用します。

    1. が適切にすべてのコードをインデント:

    私のアドバイスはしています。ほとんどのIDEには簡単にこれを行うためのショートカットが付属しています。

  4. コンソールに表示されるすべてのエラーメッセージと警告メッセージを読み、調査します。
  5. コードをデバッグしてステップ実行し、エラーの原因となっている部分を正確に見つけます。
関連する問題