Han*_*ang 1 java interface localtime
好的,我的任务是创建基本的警报实现接口。
这是我到目前为止所得到的。
这是我的主要方法。
import java.util.Scanner;
import java.time.LocalTime;
public class Monday extends Weekday{
private String time;
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
Monday m = new Monday();
String alarmer;
System.out.print("Enter time for alarm in this format (HH:MM): " );
alarmer = reader.nextLine();
m.setAlarm(alarmer);
m.showAlarm();
}
@Override
public void setAlarm(String time) {
this.time = time;
LocalTime alarm = LocalTime.parse(time);
LocalTime now = LocalTime.now();
if (alarm.isBefore(now)) {
System.out.println("I'll wake you up later!");
}
else {
System.out.println("Alarm is set for tomorrow!");
}
}
@Override
public String showAlarm() {
return time;
}
}
Run Code Online (Sandbox Code Playgroud)
下一个是界面
导入java.util.Scanner;导入 java.time.LocalTime;
interface Alarm {
void setAlarm(String time);
String showAlarm();
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是,即使输入的内容已经过了当前时间,我总是得到“我稍后会叫醒你”。有什么想法可以避免获得相同的输出吗?
Enter time for alarm in this format (HH:MM): 05:30
I'll wake you up later!
无论输入什么,它都只会执行并显示“我稍后会叫醒你!” 当输入的时间超过当前时间时,它应该显示代码行“闹钟设置为明天”
鉴于问题和评论,您似乎对没有日期上下文的 24 小时时钟的逻辑感到困惑。
过了午夜意味着你将进入新的一天。因此,一天中比现在早的任何时间都意味着明天。
这是一些简单的示例代码。
模拟当前时间下午 5 点。
// ----------| now = 17:00 |------------------------------
LocalTime now = LocalTime.of( 17 , 0 );
System.out.println( "now = " + now );
Run Code Online (Sandbox Code Playgroud)
在不同的时间值设置闹钟:22:00、15:00 和 05:30。
// ----------| alarm 22:00 |------------------------------
LocalTime tenPM = LocalTime.parse( "22:00" );
System.out.println( "" );
System.out.println( "tenPM = " + tenPM );
if ( tenPM.isBefore( now ) )
{
System.out.println( "I'll wake you up tomorrow." );
} else
{
System.out.println( "Alarm is set for today." );
}
// ----------| alarm 15:00 |------------------------------
LocalTime threePM = LocalTime.parse( "15:00" );
System.out.println( "" );
System.out.println( "threePM = " + threePM );
if ( threePM.isBefore( now ) )
{
System.out.println( "I'll wake you up tomorrow." );
} else
{
System.out.println( "Alarm is set for today." );
}
// ----------| alarm 05:30 |------------------------------
LocalTime fiveThirtyInMorning = LocalTime.parse( "05:30" );
System.out.println( "" );
System.out.println( "fiveThirtyInMorning = " + fiveThirtyInMorning );
if ( threePM.isBefore( now ) )
{
System.out.println( "I'll wake you up tomorrow." );
} else
{
System.out.println( "Alarm is set for today." );
}
Run Code Online (Sandbox Code Playgroud)
运行时:
now = 17:00
tenPM = 22:00
Alarm is set for today.
threePM = 15:00
I'll wake you up tomorrow.
fiveThirtyInMorning = 05:30
I'll wake you up tomorrow.
Run Code Online (Sandbox Code Playgroud)
您的闹钟没有跟踪某个时刻,即时间线上的特定点。这将涉及Instant、OffsetDateTime、 或ZonedDateTime类。
您的闹钟正在跟踪一天中的时间,没有日期上下文,也没有时区上下文或与 UTC 的偏移量。所以你的闹钟使用了LocalTime类。
| 归档时间: |
|
| 查看次数: |
2720 次 |
| 最近记录: |