我收到了学校的任务,他们要求我建立一个带有一些功能的简单时钟。
我需要某种约束,这样如果我创建一个对象,人们只能输入好的整数。例如;你不能在几小时内输入25或者在分钟和秒数时输入60以上的整数。
我开始为小时,分钟和秒创建实例变量。我创建了一个构造函数;
我的代码如下:
public class Clock{
//Instance variables
public int seconds;
public int minutes;
public int hours;
public Clock ( int InsertSeconds, int InsertMinutes, int InsertHours){
seconds = InsertSeconds;
minutes = InsertMinutes;
hours = InsertHours;
}
}
诗;我是java的初学者,不要向我开枪
谢谢!
答案 0 :(得分:0)
抛出异常。 IllegalArgumentException将是一个不错的选择。
public Clock ( int InsertSeconds, int InsertMinutes, int InsertHours){
if (InsertSeconds > 59 || InsertSeconds < 0) {
throw new IllegalArgumentException("InsertSeconds must be in range 0-59 but found "+ InsertSeconds);
}
// similar for minutes & hours
seconds = InsertSeconds;
minutes = InsertMinutes;
hours = InsertHours;
}
答案 1 :(得分:0)
使用例外!例如:
if(seconds > 60)
throw new SecondsTooBigException();
你必须创建一个新的SecondsTooBigExcetion
public class SecondsTooBigException extends Exception {
@Override
public String getMessage() {
return super.getMessage() + "\nSecondsTooBigException: Exception occured, because you defined a value, which is not allowed for seconds";
}
}
答案 2 :(得分:0)
假设您的时钟具有24小时格式(即简单的解决方案),您可以使用基本流量控制:
public boolean areAllSegmentsValid() {
if (this.hours < 0 || this.hours > 24) {
System.out.println("Hours are not in range 0-24");
// A better of option wil be exception (you are novice so learn about first)
return false;
} else if (this.minutes < 0 || this.minutes > 60){
System.out.println("Minutes are not in range 0-24");
// A better of option wil be exception (you are novice so learn about first)
} else if (this.seconds < 0 || this.seconds > 60){
System.out.println("Minutes are not in range 0-24");
// A better of option wil be exception (you are novice so learn about first)
} else {
return true;
}
return true;
}
上述解决方案要求您对Java有一个最低限度的理解,您已经在原始问题中指出了这一点。一旦掌握了这个概念,我建议你尝试使用断言替换上面的if条件,例如:
assert (this.hours >= 0 && this.hours<=24); // Assertion to check if the cond. is true
...
...
更多的Java方法是使用Clock类的例外,例如IllegalHoursValue异常或IllegalTimeSegment异常。但是,为了您的安全,我会留下您来调查其余部分。
答案 3 :(得分:0)
您可以使用此静态方法:
public static boolean validTime(int hours, int minutes, int seconds) {
if (hours <= 24 && minutes <= 60 && seconds <= 60) {
if (hours >= 0 && minutes >= 0 && seconds >= 0) {
return true;
}
}
return false;
}
为其提供用户输入的值。如果它返回true
,则将其传递给构造函数,否则请求用户再次输入值。