我在学校被要求用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
isfalse
等时得到评估。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句