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

Java Clock simulation, don't know how to proceed with do...while

我在学校被要求在 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 < finhorafalse 时才被评估,等等