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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 仲伟 中级黑马   /  2013-5-13 16:43  /  1697 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void main(String[] args) { int[] a=
{1,2,3,4,5}; int[] b=new int[10]; for (int i : b) {
b[i]=0; }    System.arraycopy(a, 1, b, 0,4);   
for (int i : b) {  System.out.println(b[i]); }    }
我想把1~5 复制到数组B的前5个位置 但显示的结果是
2345022222 这是怎么回事?求解释
{    System.out.print(i);   }       }希
望对你有帮助。。。。仍有问题可以HI我。。。

2 个回复

倒序浏览
有几个小问题哦。。。。
for (int i : b) {
  b[i]=0;
}
这样的赋值是不对的。。。。。
数组b 的初值都是0,而for (int i : b)表示的意思是依次取b中的每个值,而b里面的值都是0,所以无论循环多少次,执行的都是同一条语句b[0] = 0;
如果是 for (int i : b) {
  b[i]=1;
}
只有b[0] = 1, 其它的都是0

System.arraycopy(a, 1, b, 0,4);这个应该改为System.arraycopy(a, 0, b, 0,5);
否则只能复制2~5
public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)
参数:
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。

  for (int i : b) {
  System.out.println(b[i]);
这个应该改成
  for (int i : b) {
  System.out.println(i);

最后修改后的代码如下,我已经测试过了。。
public static void main(String[] args) {
   int[] a={1,2,3,4,5};
   int[] b=new int[10];
   for (int i : b) {
    b[i]=0;
   }
      System.arraycopy(a, 0, b, 0,5);
      for (int i : b) {
    System.out.print(i);
   }
      
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马