我有这个练习代码来计算未来的小时数:
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 ++;
}
答案 0 :(得分:2)
要详细说明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