繁体   English   中英

为什么此for循环在Java中不起作用?

[英]Why does this for loop don't work in java?

我有此练习代码来计算未来的小时数:

public static void main(String[]   args) {
Scanner scanner = new Scanner (System.in);
String amPm;
System.out.println("Write an hour (lower o equal to 12) ");
int startHour = scanner.nextInt();
System.out.println("write the number of hours to sum ");
scanner.nextLine();
int hoursToSum = scanner.nextInt();

System.out.println("am or pm? (1/0)");
int selection = scanner.nextInt();

if (selection == 1) {
amPm = ".am";
}
else {
amPm = ".pm";
}

for(int i = 0; i == hoursToSum; i++) {
startHour ++;
if (startHour > 12) {
startHour = 1;
if (amPm.equals(".am")) {
amPm = ".pm";
}
else {
amPm = ".am";
}
}
}
System.out.println("it´s gonna be: " + startHour + amPm);
}

但这不起作用,除了startHour值为12以及hourToSum值为0。

我尝试了while循环,它起作用了!

我知道for和while循环都能够执行相同的任务。 那么,为什么会这样呢?

 int i = 0;
while(i < hoursToSum) {
startHour ++;
if (startHour > 12) {
startHour = 1;
if (amPm.equals(".am")) {
amPm = ".pm";
}
else {
amPm = ".am";
}
}
i ++;

}

为了详细说明Amadan的评论,for循环包括三个部分:1.带有变量声明的初始化2.条件3.迭代或循环结束时的状态更改

这些事情也会在while循环中发生,但放置方式不同

for (int i = 0; i < 12; i++) {  //(initialization;condition;iteration)
    doStuff();
}

这会将i初始化为0,每次块中的代码完成时将其递增,如果i超过12,则退出循环。

int i = 0;       // initialization
while (i < 12) { //condition
    doStuff();
    i++;         //iteration
}

错误出现在for循环的条件部分中,您在其中检查i == hoursToSum而不是i <hoursToSum,就像在while循环中所做的那样

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM