for循环陷阱

来自黑马程序员论坛的一个题目,考察java语言for循环的初始化表达式
public class ForTest {
	public static void main(String[] args) {
	String[] books = { "《Java就业培训教程》", "《深入体验JAVA Web 开发内幕--高级特性》","《Java邮件开发详解》 " };
    //代码1
    for(int i = 0;i<books.length;i++);
    {
        System.out.println("第i个元素的值:" + books[i]);
    }
   
    //代码2
    int i =0;
    for(;i<books.length;i++);
    {
        System.out.println("第i个元素的值:" +  books[i]);
    } 
    //代码3
    for(int[] intArr = {5,6,-10};int i = 0;i<intArr.length;i++) {
        System.out.println("intArr数组的元素为:"+intArr[i]);
    }
    //代码4
    for(int i = 0,String name = "abc";i<books.length;i++)
    {
        System.out.println("第i个元素的值:" + books[i]+name);
    }
}
}
main方法内 开始先定义了名为books的字符串数组, 每一个代码分开来说 其他加注释

代码1:看起来像普通的for循环写法 但是for()后面有;    而for()语句里的初始化变量int i=0;的作用域只在for循环里面

所以这句代码块 System.out.println("第i个元素的值:" + books[i]); 会报错 提示i变量未定义

代码2:这句是将初始化变量语句int i = 0;写在for循环外面.但for()后还是有; 

所以下面的代码块输出for()循环后i的值3,虽然for循环没有任何显示但循环判断都在运行,最后i值为3跳出for循环

提示越界异常.

代码3:这句for()括号内有三个; 出题的本意应该是定义一个int型数组intArr和int型i. 但写法错误

尝试写成for(int[] intArr = {5,6,-10},int i = 0;i<intArr.length;i++) //eclipse报以下错误

- Type mismatch: cannot convert from int[] to int
- Type mismatch: cannot convert from int to int[] 前两行 应该是java语法编译中类型向后传递导致的错误?或者初始化语句必须是同类型的 
- The operator < is undefined for the argument type(s) 
int[], int 

代码4:和代码三同样的错误,初始化语句必须是同类型的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值