黑马程序员技术交流社区

标题: 数组问题 [打印本页]

作者: 何超    时间: 2013-11-23 19:09
标题: 数组问题
本帖最后由 何超 于 2013-11-23 22:27 编辑
  1. import java.util.Arrays;

  2. class A {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] originalArr = new int[] { 1, 9, 5, 10, 13 };
  6.                 int[] firstArr = new int[originalArr.length / 2];
  7.                 int[] secondArr = new int[originalArr.length / 2 + 1];

复制代码
就是把第一个数组从中间开始切割分别赋值给其他两个数组
fisrtArr的赋值没问题   (1 ,9)可以顺利进入firstArr
可是 secondArr的赋值就出现问题了 输出结果是(5 ,10, 0) 13无论如何也无法赋值进去
为0说明赋值失败S自己初始化为0  可是最后13的时候正好对应的是 secondArr[2]= originalArr[2+2] 为什么会赋值不进去
我设置的seocndArr的长度也是没问题的
逻辑也应该是这样啊!为什么会出现这种情况

作者: 心的方向    时间: 2013-11-23 19:22
你是不是哪里写错了,
作者: hurryup    时间: 2013-11-23 19:28
originalArr.length / 2加个括号试试
作者: 何超    时间: 2013-11-23 19:48
心的方向 发表于 2013-11-23 19:22
你是不是哪里写错了,

编译可以通过应该是逻辑问题 可是我看不出逻辑问题
作者: 何超    时间: 2013-11-23 19:49
hurryup 发表于 2013-11-23 19:28
originalArr.length / 2加个括号试试

没用!!!我试了!!!真心被这个问题搞得蛋疼,怎么也看不出来到底是哪里出错了!!!
作者: 心的方向    时间: 2013-11-23 21:15
你我个怎么写的全放出来看下吧

作者: 心的方向    时间: 2013-11-23 21:15
你我个怎么写的全放出来看下吧

作者: 何超    时间: 2013-11-23 21:31
心的方向 发表于 2013-11-23 21:15
你我个怎么写的全放出来看下吧

其他的太多了 看起来太累 这段代码可以独立拿出来 问题就出现在这一段 跟其他的没关系!!!
作者: 心的方向    时间: 2013-11-23 21:36
public static void main(String[] args)
        {
                int[] originalArr = new int[] { 1, 9, 5, 10, 13 };
                int[] firstArr = new int[originalArr.length / 2];
                int[] secondArr = new int[originalArr.length / 2 + 1];
               secondArr[2] = originalArr[4];
              System.out.println(secondArr[2]);//是没有问题的
       }
作者: qq379264347    时间: 2013-11-23 21:41

  1. class A {
  2.         public static void main(String[] args)
  3.         {
  4.                 int[] originalArr = new int[] { 1, 9, 5, 10, 13 };
  5.                 int[] firstArr = new int[originalArr.length / 2];
  6.                 int[] secondArr = new int[originalArr.length - firstArr.length]; //剩下长度

  7.                 for(int i = 0; i < firstArr.length; i++)
  8.                         firstArr[i] = originalArr[i];
  9.                 int index = 0; //保存索引
  10.                 for(int i = firstArr.length; i < originalArr.length; i++)
  11.                         secondArr[index++] = originalArr[i];
  12. System.out.println("原始");
  13.                 for(int i = 0; i < originalArr.length; i++)
  14.                         System.out.print(originalArr[i] + ",");
  15.                 System.out.println("");
  16. System.out.println("拆分前");
  17.                 for(int i = 0; i < firstArr.length; i++)
  18.                         System.out.print(firstArr[i] + ",");
  19.                 System.out.println("");
  20. System.out.println("拆分后");
  21.                 for(int i = 0; i < secondArr.length; i++)
  22.                         System.out.print(secondArr[i] + ",");
  23.                 System.out.println("");
  24.         }
  25. }
复制代码
  1. 原始
  2. 1,9,5,10,13,
  3. 拆分前
  4. 1,9,
  5. 拆分后
  6. 5,10,13,
复制代码
没有任何问题,不知道楼主具体是哪里不对劲,也没给全代码。




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