2017-02-07 5 views
1

私のプログラムは時間を要求しており、私は":"で時間を分割しています。何らかの理由で、前もって0で何かを入力すると、最初の値としてそれが削除されます。それがなぜこれをするのか?Integer.parseIntは先行0を削除します

これは私のコードです:

import java.util.Scanner; 

public class ArrivalTime { 
    public static void main(String[] args) { 

     Scanner sc = new Scanner(System.in); 
     boolean rushHour; 

     System.out.print("Enter The Time Fiona Will Leave For Work (HH:MM): "); 
     String departureTime = sc.nextLine(); 

     String parts[] = departureTime.split(":"); 

     int departureHour = Integer.parseInt(parts[0]); 
     int departureMinute = Integer.parseInt(parts[1]); 

     System.out.println(departureHour + " " + departureMinute); 
    } 
} 
+2

'Integer.parseInt(" 00 ")'は、0で表される整数値を返します。あなたは正確に何を期待したのですか? intの代わりにStrings 'parts [0]' 'parts [1]'を直接使用しないでください。 – Pshemo

+1

フォーマットされた出力を使用します( '00'が必要な場合)。同様に、 'System.out.printf("%02d:%02d%n "、departureHour、departureMinute);' –

+0

"厳密に間違った記述をしています。 int型はこの意味で先行ゼロを持たない(シーンの裏側では2進数で、通常は0ビットを先行させるが、これは全く別の話である)。 'int'は数字だけで、*印は何か他のものです:任意の' int'値は先頭にゼロを付けてもしなくても表示することができます –

答えて

2
int departureHour = Integer.parseInt(parts[0]); 
int departureMinute = Integer.parseInt(parts[1]); 
System.out.println(departureHour + " " + departureMinute); 

Integer.parseInt(ANY_INTEGER_VALUE)返す整数。例えば

Integer.parseInt(03)は、あなたが与えられた入力

3時09

を表示したい場合は、それがあるとして、あなたはそれがあると表示文字列を維持する必要があります代わりに03

の3を返します。

System.out.println (parts[0] + " " + parts[1]); 

計算目的でのみintを解析します。

注:@ Elliotのコメントを読んだ後で、以下の部分を編集しました。

それとも@Elliotとしては彼のコメントで指定:

System.out.printf("%02d %02d%n", departureHour, departureMinute); 
1

問題がInteger.parseInt()呼び出しです。先行ゼロを持つ文字列を渡すと、それらは削除され、結果は自然数になります。先行ゼロを表示する場合は、次のように記述してください。

String departureHour = parts[0]; 
String departureMinute = parts[1]; 

System.out.println(departureHour + " " + departureMinute); 
関連する問題