从int创建时钟格式

时间:2016-02-06 18:36:11

标签: java parsing casting splice

我一直在寻找,但一切似乎都很复杂。我太习惯于在python中拼接,但我是一个java菜鸟。

我得到一个长度为4位的输入,我必须限制某些数字,以便以后可以显示为时钟。我正在使用军事时间。我试图转换为字符串以获取我想要的子字符串然后将其转换回int,但我得到一个in-convertible类型错误。

    String digits = Integer.toString(clockVal);

    if (Integer.parseInt(digits.charAt(0) > 1 ) { // cuz 1st dig can only be 1 or 0

感谢任何帮助。 PS我也无法改变int的输入。

3 个答案:

答案 0 :(得分:3)

假设您有一个4位数的int,必须是0000到2359之间的24小时时间

public static boolean isValid(int time) {
     int mins = time % 100;
     return mins < 60 && hrs >= 0 && hrs < 2400;
}

假设它在0001和2400之间

public static boolean isValid(int time) {
     int mins = time % 100;
     return mins < 60 && time >= 1 && time <= 2400;
}

答案 1 :(得分:1)

如果这是您的确切代码,则if语句将出现编译时错误:(Integer.parseInt(digits.charAt(0) > 1 )。您缺少右括号,因此编译器认为您尝试将digits.charAt(0) > 1boolean值)解析为Integer,而不是您想要的(Integer.parseInt(digits.charAt(0)) )。

答案 2 :(得分:1)

我喜欢彼得的回应。附上我的代码,这是基于彼得的回应。

package general;

public class ClockPlay {
    ClockPlay() {}

    public static boolean isValidTime (int time){
        int mins = time % 100;
        System.out.println("Mins is:" + mins);
        return (mins >= 0 && mins < 60 && time >= 0 && time <= 2400);
    }

    public static void main(String[] args) {
        int time1 = 1245;
        int time2 = 2510;

        System.out.println("Validity of Time 1 is:" + isValidTime(time1));
        System.out.println("Validity of Time 2 is:" + isValidTime(time2));
    }

}

输出:

Mins is:45
Validity of Time 1 is:true
Mins is:10
Validity of Time 2 is:false