2017-02-07 4 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는이 의미에서 0을 가지지 않습니다 (장면 뒤에서는 32 비트 바이너리이며 일반적으로 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) 반환 정수 :

내 코드입니다. 예 : 당신은 주어진 입력

그대로

3시 9분을 표시하려면 Integer.parseInt(03)은 그것이 당신이 표시되는 문자열을 유지해야하는 대신 03

의 3을 반환합니다

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

계산 목적으로 int를 구문 분석하십시오.

참고 : @ Elliot의 의견을 읽은 후 아래 부분을 편집했습니다.

또는 @Elliot 같은 그의 의견에 지정된 :

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

문제는 Integer.parseInt() 호출입니다. 선행 0이있는 문자열을 전달하면 제거되고 결과는 자연수입니다. 선행 제로를보고 싶다면 다음을 작성하십시오 :

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

System.out.println(departureHour + " " + departureMinute); 
관련 문제