2017-02-07 10 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'. Что именно вы ожидали и почему? Почему бы не использовать части Strings '[0]' 'parts [1]' непосредственно вместо int? – Pshemo

+1

Используйте форматированный вывод (если вы хотите '00'). Например: 'System.out.printf («% 02d:% 02d% n », departureHour, departureMinute);' –

+0

«Удаляет ведущие нули», строго говоря, является неправильным описанием. 'ParseInt()' дает вам Java 'int' , а 'int' не имеет ведущих нулей в этом смысле (за кулисами это 32 бита и обычно имеет нулевые биты, но это совершенно другая история). Вам нужно будет узнать, что * значение * '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 вместо 03.

Если вы хотите отобразить данный вход

03:09

, как это, вы должны сохранить строку отображаться как это:

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

Разбор для интуиции только для расчетных целей.

Примечание: Я прочитал ниже часть после прочтения комментария Эллиота.

Или, как указано @Elliot в своем комментарии:

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

Проблема заключается в Integer.parseInt() вызова. Когда вы пройдете там строку String с ведущими нулями, они будут удалены, а результат будет натуральным. Если вы хотите увидеть начальные нули, просто напишите:

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^