【问题标题】:Why does this for loop don't work in java?为什么这个for循环在java中不起作用?
【发布时间】:2019-05-29 02:50:22
【问题描述】:

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

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);
}

但它不起作用,除了值 12 到 startHour 和 0 到 hourToSum。

我尝试了 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 ++;

}

【问题讨论】:

  • i == hoursToSumi &lt; hoursToSum 不一样;所以你的 whilefor 行为不同。
  • 感谢 Amadan,它成功了
  • 请正确格式化这个难以辨认的混乱。

标签: java loops


【解决方案1】:

为了详细说明 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

【讨论】:

  • 谢谢杰里米,你说得对,我错过了条件。
猜你喜欢
  • 2013-12-13
  • 1970-01-01
  • 2013-11-12
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 2011-02-12
  • 2010-10-17
相关资源
最近更新 更多