加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java和c中的for循环有什么区别吗?

发布时间:2020-12-15 05:11:47 所属栏目:Java 来源:网络整理
导读:for c in c int i;int n = 20;for(i = 0; i + n; i-- ) { printf("-n");} for循环在java中 int i;int n=20;for (i = 0; i + n; i--) { System.out.println("-n");} 在上面的示例中,循环在c中工作正常(将打
for c in c

int i;
int n = 20;
for(i = 0; i + n; i-- ) {
     printf("-n");

}

for循环在java中

int i;
int n=20;
for (i = 0; i + n; i--) {
   System.out.println("-n");
}

在上面的示例中,循环在c中工作正常(将打印“ – ”20次).但是在java中循环显示错误为

线程“main”中的异常java.lang.Error:未解决的编译问题:
????类型不匹配:无法从int转换为布尔值

为什么会出现这种错误?

解决方法

在C中,0被认为是假,其余的数字被解释为真.在Java中,这不起作用,因为它具有不是int的布尔类型,并且int不能直接转换为布尔值.

要修复Java代码,您应该将第二部分写为布尔表达式:

for (i = 0; (i + n) != 0; i--) {
    System.out.println("-n");
}

虽然(i n)!= 0可能有效,但我更愿意使用(i n)> 0,因为如果n从-1开始,这个循环将工作,直到我下降到Integer.MIN_VALUE值,下溢到Integer.MAX_VALUE并下降到1.为了防止这种行为(如果是不希望的话),它会更好像这样写:

for (i = 0; (i + n) > 0; i--) {
    System.out.println("-n");
}

从@ Lundin的评论看来,你的C代码看起来也应该修复:

//or use my proposed fix by using > rather than !=
for(i = 0; (i + n) != 0; i-- ) {
    printf("-n");
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读