黑马程序员技术交流社区

标题: 求大神解释一下这段代码 [打印本页]

作者: zeizeizeiaaa    时间: 2015-3-24 13:14
标题: 求大神解释一下这段代码
package com.heimait;

public class Test11 {
public static void main(String[] args) {
       
        String[] books = { "《Java就业培训教程》", "《深入体验JAVA Web 开发内幕--高级特性》","《Java邮件开发详解》 " };
    //代码1
       
    for(int i = 0;i<books.length;i++);
    {
        int i = 0;
                System.out.println("第i个元素的值:" + books[i]);
    }
   
    //代码2
    int i =0;
    for(;i<books.length-1;i++);
    {
        System.out.println("第i个元素的值:" +  books[i]);
    }
}
}


作者: zeizeizeiaaa    时间: 2015-3-24 13:16
控制台最后输出的是:第i个元素的值:《Java就业培训教程》
                              第i个元素的值:《Java邮件开发详解》
作者: 圣光忏悔    时间: 2015-3-24 13:21
  System.out.println("第i个元素的值:" +  books[i]);

你这里的i是字符串类型
("第"+i+"个元素的值:" +  books[i]);
将i放开才行
作者: zeizeizeiaaa    时间: 2015-3-24 13:34
这个不是重点,重点是为什么只打印一次
作者: 圣光忏悔    时间: 2015-3-24 13:42
代码1: for() 小括号后面不能加分号,不但下面就成了成员代码块,与for无关
          然后,减掉分号之后,语句体里面对i经行赋值是错误的
代码2: 同理 还有长度有问题
因为这里i<books.length-1
长度为3 你减去1 就只剩下2
还要小于
所以只剩下0和1 两次了
作者: zeizeizeiaaa    时间: 2015-3-24 13:56
圣光忏悔 发表于 2015-3-24 13:42
代码1: for() 小括号后面不能加分号,不但下面就成了成员代码块,与for无关
          然后,减掉分号之后,语 ...

大神,第一段懂了,第二段为什么是输出的books[2],不是应该books[1]吗?
作者: 圣光忏悔    时间: 2015-3-24 14:18
代码2的开头将i定义为了0,但是在for循环中,已经将i循环到了2
同代码1,for条件和后面的语句题分号隔开,无影响,所以打印出来的的就是i为2的结果.
作者: 剑雨飘扬    时间: 2015-3-24 14:25
你代码1 for循环里还有个int i=0 ,那不是无限循环了?每次都是输出books[0]的值。。
作者: 剑雨飘扬    时间: 2015-3-24 14:27
剑雨飘扬 发表于 2015-3-24 14:25
你代码1 for循环里还有个int i=0 ,那不是无限循环了?每次都是输出books[0]的值。。 ...

忘记看了,你for()后面还有分号
作者: zeizeizeiaaa    时间: 2015-3-24 14:33
圣光忏悔 发表于 2015-3-24 14:18
代码2的开头将i定义为了0,但是在for循环中,已经将i循环到了2
同代码1,for条件和后面的语句题分号隔开,无影 ...

懂了,谢谢大神




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2