黑马程序员技术交流社区

标题: 遍历较长的数组不能用for? [打印本页]

作者: 小城。    时间: 2014-9-27 15:15
标题: 遍历较长的数组不能用for?
遍历长度为128的数组使用for(short i = 0;i<arr.length;i++);有错么,为什么在技术自测里说是错的?这是我在别的论坛看见的,我也不知道错在哪?求大神解释
作者: ζ_____________    时间: 2014-9-27 15:23
本帖最后由 ζ_____________ 于 2014-9-27 15:28 编辑

可否把代码都贴出来呢?
  1. class ArrayTest
  2. {
  3.    public static void main(String[] args)
  4.    {
  5.       short[] arr = new short[128];           //创建一个长度为128的 shot型数组.(int型也可以)
  6.                
  7.       for (short i = 0;i<arr.length ;i++ )        //利用for循环遍历数组
  8.       { 
  9.          arr[i] = i;                             //将 i 的值对应的赋到数组中的脚标,比如: arr[0] = 0 ; arr[1] = 1;
  10.          System.out.println(arr[i]);        //将arr[i]的值打印到控制台上.
  11.       }        
  12.    }
  13. }
复制代码




作者: ζ_____________    时间: 2014-9-27 15:27
不知道你说的是不是这种情况。


  1. class ArrayTest
  2. {
  3.    public static void main(String[] args)
  4.    {
  5.       short[] arr = new short[128];
  6.       for (int i = 0;i<arr.length ;i++ )
  7.       {
  8.           arr[i] = i;   //此时会出现编译时错误,因为i是int型的, arr[]是 short型的, 这样直接赋值的话会损失精度.
  9.           System.out.println(arr[i]);
  10.       }        
  11.    }
  12. }
复制代码




作者: 梦里听传说    时间: 2014-9-27 16:02
类型转换问题 楼上给你说了,我都不献丑了
作者: fantacyleo    时间: 2014-9-28 00:43
ζ_____________ 发表于 2014-9-27 15:23
可否把代码都贴出来呢?

楼主说的应该是这种情况。但数组长度不是128,而是32768的时候会挂掉。因为超过了short的表示范围。如果要128就挂掉,可以改用byte i
作者: 袁枭飞    时间: 2014-9-28 10:35
数组类型定义错误,其他没有问题
作者: 希筱诺    时间: 2014-9-28 11:04
呵呵,仔细哦
作者: 小城。    时间: 2014-9-28 14:14
ζ_____________ 发表于 2014-9-27 15:27
不知道你说的是不是这种情况。

厉害。。
作者: 郑泽霖    时间: 2014-9-28 15:16
i是int型变量怎么赋值给short..
应该做arr[i]=(short)i;
作者: clevergump    时间: 2014-9-28 15:21
对的,需要强制类型转换




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