gpt4 book ai didi

Java Clock 模拟,不知道如何进行 do...while

转载 作者:行者123 更新时间:2023-11-30 11:05:03 26 4
gpt4 key购买 nike

我在学校被要求用 java 做一个时钟模拟,用户设置一个初始时间(例如:12:34:56)和一个必须大于初始时间的结束时间(例如:13:34 :56) 该程序只会打印时钟中的每一个变化,直到达到结束时间,到目前为止我已经完成了所有这些:(忽略西类牙语单词)

import java.util.Scanner;
public class Examen {
public static void main(String[] args) {
Scanner t= new Scanner (System.in);
int inhora, inmin, inseg, finhora, finmin, finseg;
do
{
System.out.println("Ingresa una hora de inicio:");
inhora=t.nextInt();
if (inhora <0 || inhora>=24)
System.out.println("Hora incorrecta");
}
while (inhora <0 || inhora>=24);

do
{
System.out.println("Ingresa el minuto de inicio:");
inmin=t.nextInt();
if (inmin <0 || inmin>=60)
System.out.println("Minuto incorrecto");
}
while (inmin <0 || inmin>=60);

do
{
System.out.println("Ingresa el segundo de inicio:");
inseg=t.nextInt();
if (inseg <0 || inseg>=60)
System.out.println("Segundo incorrecto");
}
while (inseg <0 || inseg>=60);

System.out.println("Hora de inicio ingresada: "+inhora+":"+inmin+":"+inseg);

do
{
System.out.println("Ingresa una hora de finalización:");
finhora=t.nextInt();
if (finhora <0 || finhora>=24)
System.out.println("Hora incorrecta");
if (finhora<inhora)
System.out.println("La hora final tiene que ser mayor que la inicial");
}
while (finhora <0 || finhora>=24);

do
{
System.out.println("Ingresa el minuto de finalización:");
finmin=t.nextInt();
if (finmin <0 || finmin>=60)
System.out.println("Minuto incorrecto");
}
while (finmin <0 || finmin>=60);

do
{
System.out.println("Ingresa el segundo de finalización:");
finseg=t.nextInt();
if (finseg <0 || finseg>=60)
System.out.println("Segundo incorrecto");
}
while (finseg <0 || finseg>=60);

System.out.println("Hora final ingresada: "+finhora+":"+finmin+":"+finseg);

do
{
System.out.println(inhora+":"+inmin+":"+inseg);

inseg++;
if (inseg>59)
{
inseg=0;
inmin++;
}
if (inmin>59)
{
inmin=0;
inhora++;
}

if (inhora>23)
{
inhora=0;
}


} while (inhora!=finhora);
}
}

我的问题是在最后的“while”,我不知道我应该把哪个条件放在那里才能完成我的目标任务,这个“while (inhora!=finhora);”我得到的只是(例如:初始时间 0:0:0 结束时间 23:59:59)直到 22:59:59 时钟的所有变化

最佳答案

你正在突破 do-while过早循环并在时间值增加之前打印时间值。将循环更改为这样可以解决问题:

do {
inseg++;

// clipped out the min/hour incrementing code

System.out.println(inhora+":"+inmin+":"+inseg);

} while (inhora < finhora || inmin < finmin || inseg < finseg);

请注意,由于短路,我们需要 OR按照这个特定的顺序一起计算小时、分钟和秒。这意味着 inmin < finmin仅在 inhora < finhora 时被评估是false

关于Java Clock 模拟,不知道如何进行 do...while,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29785421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com