San*_*ana 3 c java iteration for-loop
for c in c
int i;
int n = 20;
for(i = 0; i + n; i-- ) {
printf("-\n");
}
Run Code Online (Sandbox Code Playgroud)
for循环在java中
int i;
int n=20;
for (i = 0; i + n; i--) {
System.out.println("-\n");
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,循环在c中工作正常(将打印" - "20次).但是在java中循环显示错误为
线程"main"中的异常java.lang.Error:未解决的编译问题:类型不匹配:无法从int转换为boolean
为什么会出现这种错误?
Lui*_*oza 10
在C中,0考虑false并将其余数字解释为true.在Java中,这不起作用,因为它具有不是a的boolean类型int,并且int不能直接转换为a boolean.
要修复Java代码,您应该将第二部分写为boolean表达式:
for (i = 0; (i + n) != 0; i--) {
System.out.println("-\n");
}
Run Code Online (Sandbox Code Playgroud)
虽然(i + n) != 0可能会工作,但我更愿意使用(i + n) > 0,因为如果n开始-1,这个循环将工作,直到i下降到Integer.MIN_VALUE值,下溢到Integer.MAX_VALUE下来1.为了防止这种行为(如果是不希望的话),最好像这样写:
for (i = 0; (i + n) > 0; i--) {
System.out.println("-\n");
}
Run Code Online (Sandbox Code Playgroud)
从@ Lundin的评论看来,你的C代码看起来也应该修复:
//or use my proposed fix by using > rather than !=
for(i = 0; (i + n) != 0; i-- ) {
printf("-\n");
}
Run Code Online (Sandbox Code Playgroud)