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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小城。 中级黑马   /  2014-9-27 15:15  /  1084 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

遍历长度为128的数组使用for(short i = 0;i<arr.length;i++);有错么,为什么在技术自测里说是错的?这是我在别的论坛看见的,我也不知道错在哪?求大神解释

9 个回复

倒序浏览
本帖最后由 ζ_____________ 于 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. }
复制代码



回复 使用道具 举报
不知道你说的是不是这种情况。


  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. }
复制代码



评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1 很给力!

查看全部评分

回复 使用道具 举报
类型转换问题 楼上给你说了,我都不献丑了
回复 使用道具 举报
ζ_____________ 发表于 2014-9-27 15:23
可否把代码都贴出来呢?

楼主说的应该是这种情况。但数组长度不是128,而是32768的时候会挂掉。因为超过了short的表示范围。如果要128就挂掉,可以改用byte i
回复 使用道具 举报
数组类型定义错误,其他没有问题
回复 使用道具 举报
呵呵,仔细哦
回复 使用道具 举报
ζ_____________ 发表于 2014-9-27 15:27
不知道你说的是不是这种情况。

厉害。。
回复 使用道具 举报
i是int型变量怎么赋值给short..
应该做arr[i]=(short)i;
回复 使用道具 举报
对的,需要强制类型转换
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马