0
好吧,我一直在尝试使用重载构造函数创建一个非常简单的时钟显示,其中我使用void main字符串创建4个不同的对象,每个对象都有特定的时间。这似乎很难解释,但在下面你可以看到我的主类和另一个类。在重载的构造函数中使用AM和PM时,JAVA
public class fancyTimeTest {
public static void main(String[] args) {
try {
fancyTime ft1 = new fancyTime(10, 30, 25);
displayTime("fancyTime 1", ft1);
}
catch (IllegalArgumentException e) {
System.out.printf("%nError: %s%n", e.getMessage());
}
try {
fancyTime ft2 = new fancyTime(13, 22);
displayTime("fancyTime 2", ft2);
}
catch (IllegalArgumentException e) {
System.out.printf("%nError: %s%n", e.getMessage());
}
try {
fancyTime ft3 = new fancyTime(23, 5, 10);
displayTime("fancyTime 3", ft3);
}
catch (IllegalArgumentException e) {
System.out.printf("%nError: %s%n", e.getMessage());
}
try {
fancyTime ft4 = new fancyTime(8, 30, 43);
displayTime("fancyTime 4", ft4);
}
catch (IllegalArgumentException e) {
System.out.printf("%nError: %s%n", e.getMessage());
}
}
public static void displayTime(String header, fancyTime t) {
if (t.getFlag() == 1) {
System.out.printf("%s%n %s%n \n", header, t.toStandardString());
}
if (t.getFlag() == 2) {
System.out.printf("%s%n %s%n \n", header, t.toUniversalString());
}
if (t.getFlag() == 3) {
System.out.printf("%s%n %s%n \n", header, t.toUniversalShortString());
}
}
}
正如你可以看到4'fancyTime的每一个有不同的论点。现在下面,你可以看到我试图使用重载的构造函数来读取Main类中的不同参数。
问题是我每次运行这个时候,它会返回“错误:只能是‘AM’或
public class fancyTime {
private int hour;
private int minute;
private int second;
private String meridiem;
private int flag;
public fancyTime() {
this(0);
}
public fancyTime(int hour) {
this(hour, 0);
}
public fancyTime(int hour, int minute) {
this(hour, minute, 0);
}
public fancyTime(int hour, int minute, int second) {
this(hour, minute, second, " ");
}
public fancyTime(int hour, int minute, int second, String meridiem) {
if (hour < 0 || hour >= 24)
throw new IllegalArgumentException("Hour is not between 0-23");
if (minute < 0 || minute >= 59)
throw new IllegalArgumentException("Minute is not between 0-59");
if (second < 0 || second >= 59)
throw new IllegalArgumentException("Second is not between 0-59");
if (!meridiem.equals("AM") || !meridiem.equals("PM"))
throw new IllegalArgumentException("Can only be 'AM' or 'PM'");
}
public void setHour(int hour) {
if (hour < 0 || hour >= 24)
throw new IllegalArgumentException("Hour must be 0-23");
this.hour = hour;
}
public void setMinute(int minute) {
if (minute < 0 || minute >= 60)
throw new IllegalArgumentException("Minute must be 0-59");
this.minute = minute;
}
public void setSecond(int second) {
if (second < 0 || second >= 60)
throw new IllegalArgumentException("Second must be 0-59");
this.second = second;
}
public int getHour() {
return hour;
}
public int getMinute() {
return minute;
}
public int getSecond() {
return second;
}
public int getFlag() {
return flag;
}
public String toStandardString() {
return String.format("%d:%02d:%02d %s", ((hour ==0 || hour ==12) ? 12 : hour % 12), minute, second, (hour <12 ? "AM" : "PM"));
}
public String toUniversalString() {
return String.format("%02d:%02d:%02d", this.hour, this.minute, this.second);
}
public String toUniversalShortString() {
return String.format("%02d:%02d", this.hour, this.minute);
}
}
任何帮助会如此赞赏,并请去容易,因为我是‘PM’只有新