A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我为你着迷 金牌黑马   /  2014-6-4 21:21  /  1514 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class ArrayText
  2. {
  3.                 public static void main(String[] args)
  4.                 {
  5.                                 int[] arr={3,5,6,7,8,67};
  6.                                 printArray(arr);                               
  7.                 }
  8.                
  9.                 public static void printArray(int[] arr)
  10.                 {
  11.                                 for(int x=0;x<arr.length;x++)
  12.                                 {
  13.                                                 if(x!=arr.length-1)
  14.                                                         System.out.print(arr[x]+",");
  15.                                                 else
  16.                                                   System.out.print(arr[x]);
  17.                                 }       
  18.                 }
  19. }
复制代码
大家好,就是for循环里边的if else的判断我有点想不明白,各位仁兄能不能帮忙说下思路啊,这一块是怎么想的啊,谢谢了。

13 个回复

倒序浏览
本帖最后由 shisaa 于 2014-6-4 21:31 编辑

我是来混回复的,if(x!=arr.length-1) //判断是否是数组的最后一个元素,否,执行下一句System.out.print(arr[x]+",");
以代码中数组为例,  int[] arr={3,5,6,7,8,67};for(int x=0;x<arr.length;x++)循环中x增大,在最后一次循环时
x=arr.length-1=5,
此时执行 else System.out.print(arr[x]);
表述的不好,望见谅。
回复 使用道具 举报
shisaa 发表于 2014-6-4 21:23
我是来混回复的,if(x!=arr.length-1)  System.out.print(arr[x]+",");

这个代码有点问题,最后一次打印的时候忘记换行了。但是想不明白为什么要2次判断呢 ?
回复 使用道具 举报
关于楼上说的我就不多说了,来说一下你的新问题,为什么要进行来年歌词判断?
if(x!=arr.length-1)
         System.out.print(arr[x]+",");
else
         System.out.print(arr[x]);
说的是这一段吧?
为什么会有else判断这跟你的总体的判断有关,你的if条件是:x!=arr.length-1.他就说明还有x=arr.length-1这种情况,否则它是不会打印arr[length - 1]这个索引所指向的具体的数组值的.所以得有else来让他打印arr[length - 1]这个索引里面的值,即数组的最后一个一个数组元素.其次,也是为了在控制台看着符合规范.
else
         System.out.print(arr[x]); //这里输出的最后的一个数组元素值不会  ",";
输入结果为 :    3,5,6,7,8,67
显然和数组的{}里面一致;
如果不顾及这些可以下面
这个if判断代码块可以这样:
if (x <= arr.length-1){
         System.out.print(arr[x]+",")
}
输出的结果为:  3,5,6,7,8,67,     很明显多了个  ","
希望对你有帮助.

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1 赞一个!

查看全部评分

回复 使用道具 举报
class ArrayText
{
                public static void main(String[] args)
                {
                                int[] arr={3,5,6,7,8,67};//Array.length=6
                                printArray(arr);                                
                }
               
                public static void printArray(int[] arr)
                {
                                for(int x=0;x<arr.length;x++)//遍历这个数组
                                {
                                                if(x!=arr.length-1)
                                                        System.out.print(arr[x]+",");//当没有遍历到这个数组的最后一个元素67时,每个元素后面都需要逗号分开。
                                                else
                                                  System.out.print(arr[x]);//当遍历到最后一个元素,就不需要逗号了
                                }        
                }
}

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

回复 使用道具 举报
我为你着迷 发表于 2014-6-4 21:26
这个代码有点问题,最后一次打印的时候忘记换行了。但是想不明白为什么要2次判断呢 ? ...

是为了最后一个元素不加“,”号
回复 使用道具 举报
恩恩,是为了最后一个元素打印出来不加逗号呢
回复 使用道具 举报
是为了最后一位元素后面不会出现逗号,因为数组的元素角标是从0开始的,所以最后一位是length-1,也就是说如果是6个数,那是角标0,1,2,3,4,5,所以是6个数-1,就是数组的最后一个角标,楼主的代码if里就是判断是不是最后一位角标。初学者不知道我回答的对不对,众大神不要笑话我啊!!!
回复 使用道具 举报
夏季熬成了秋 发表于 2014-6-5 02:50
关于楼上说的我就不多说了,来说一下你的新问题,为什么要进行来年歌词判断?
if(x!=arr.length-1)
          ...

谢谢那  辛苦了 亲  
回复 使用道具 举报
姿_`态 发表于 2014-6-5 08:57
class ArrayText
{
                public static void main(String[] args)

谢谢哦 我知道了{:3_53:}
回复 使用道具 举报
打印结果3,5,6,7,8,67
判断是为了打印最后一个数arr[5]时后面不跟逗号
回复 使用道具 举报
路过路过路过路过路过路过路过
回复 使用道具 举报
这里是以逗号作为输出是的分隔符,元素最后一个是没有后续的,所以不需要分隔符,if就是输出前n-1个元素和分隔符,else则负责输出最后一个元素,你也可以用别的分隔符,或者直接println()输出一个就换行
回复 使用道具 举报
pk49800 发表于 2014-6-5 20:36
这里是以逗号作为输出是的分隔符,元素最后一个是没有后续的,所以不需要分隔符,if就是输出前n-1个元素和 ...

嗯谢谢  我懂了   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马