我一直在寻找,但一切似乎都很复杂。我太习惯于在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的输入。
答案 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) > 1
(boolean
值)解析为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