Integer.parseInt删除前导0

时间:2017-02-07 18:31:15

标签: java parseint leading-zero

我的程序要求时间,我正在按":"分割时间。出于某种原因,如果我输入之前带有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 个答案:

答案 0 :(得分: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]);

解析为int仅用于计算目的。

注意:我在阅读@ Elliot的评论后编辑了以下部分。

或者@Elliot在评论中指出:

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

答案 1 :(得分:1)

问题是Integer.parseInt()电话。当你传递一些带有前导零的字符串时,它们将被删除,结果是一个自然数。如果你想看到前导零,只需写:

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

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