CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

简单的数组问题

楼主zwp315(城市大嫖客)2002-07-03 15:39:56 在 Java / J2SE / 基础类 提问

给我讲讲程序:  
  public   class   ArrayElementAngle   {  
   
      public   ArrayElementAngle()   {  
      }  
      public   static   void   main(String[]   args)   {  
          int   mArray[][]   =   new   int[5][];  
          int   nCounter   =   1;  
          for(int   m   =   0;m<mArray.length;m++){  
                    for(int   n=   0;n<mArray.length;n++)    
   
                        mArray[m][n]   =   nCounter;             //好象是这句有问题。  
                        nCounter++;  
            }  
          for(int   m   =   0;m<mArray.length;m++){  
              System.out.println("第"+m+"行->");  
              for(int   n   =   0;n<mArray[m].length;n++)  
                  System.out.println("   "+mArray[m][n]+"     ");  
                  System.out.println("\n");  
   
          }  
   
          }  
   
          }  
  编译通过,CLASS,CLASSPATH设置都正确。(JDK1。4)  
  错误信息:  
  Exception   in   thread   "main"   java.lang.NullPointerException  
                  at   ArrayElementAngle.main(ArrayElementAngle.java:11) 问题点数:20、回复次数:11Top

1 楼liushaohui(巴乔)回复于 2002-07-03 15:56:35 得分 3

 
          int   mArray[][]   =   new   int[5][];  
  为  
   
          int   mArray[][]   =   new   int[5][5];  
           
  Top

2 楼bigchina001(一瓢道长)回复于 2002-07-03 16:03:05 得分 2

将int   mArray[][]   =   new   int[5][];改为int   mArray[][]   =   new   int[5][5];  
  因为java不支持动态数组,如果你想使用一个动态大小的数组,可以考虑用向量。Top

3 楼zwp315(城市大嫖客)回复于 2002-07-03 16:16:04 得分 0

为什么int   mArray[][]   =   new   int[5][3];不行?Top

4 楼hardtoreg(柱子)回复于 2002-07-03 16:21:05 得分 2

你定义的二维数组可以看作是包含5个数组的数组,而每个数组大小可以不同,但必须是已存在的,也就是说你只定义了一个可以放5个数组的数组,但里面却一个数组都没放。这才会出现NullPointerException。根据你的程序来看,还是用Vector吧,它可以任意增加,删除元素。Top

5 楼zwp315(城市大嫖客)回复于 2002-07-03 16:24:34 得分 0

本来我是想实现:  
   
  第0行  
  1  
  第1行  
  2   3    
  。  
  。  
  第4行  
  11  
  12  
  13  
  14  
  15  
   
  可现在的结果是  
  1   2   3   。。。。。。20Top

6 楼knight_qmh(辉)回复于 2002-07-03 16:24:34 得分 1

等于多少都没关系,关键在  
  for(int   n=   0;n<mArray.length;n++)  
  定义的数组中不能大于mArray.lengthTop

7 楼nichole()回复于 2002-07-03 16:41:46 得分 1

要是一定要这样可以在输出时控制Top

8 楼ddtqfly(风语无阻)回复于 2002-07-03 16:58:15 得分 1

同意bigchina001(幽谷清风)的  
  Top

9 楼eyeieye(魔之眼)回复于 2002-07-03 17:18:02 得分 6

搞什么搞  
   
  public   class   ArrayElementAngle   {  
   
      public   ArrayElementAngle()   {  
      }  
      public   static   void   main(String[]   args)   {  
          int   mArray[][]   =   new   int[5][];  
          int   nCounter   =   1;  
          for(int   m   =   0;m<mArray.length;m++){  
  mArray[m]   =   new   int[m+1];  
                    for(int   n=   0;n<=m;n++)   {  
                        mArray[m][n]   =   nCounter;            
                        nCounter++;  
    }  
            }  
          for(int   m   =   0;m<mArray.length;m++){  
              System.out.println("第"+m+"行->");  
              for(int   n   =   0;n<mArray[m].length;n++)  
                  System.out.println("   "+mArray[m][n]+"     ");  
                  System.out.println("\n");  
   
          }  
   
          }  
   
          }  
  Top

10 楼eyeieye(魔之眼)回复于 2002-07-03 17:19:26 得分 0

教人之前自己最好想清楚了,误人子弟Top

11 楼wu4long()回复于 2002-07-03 18:11:38 得分 4

eyeieye(魔之眼)说的没错!  
  上面的问题的根源在于对Java的多重数组的理解,Java没有C++的多重数组的概念。但为了一些人的习惯,也可用m[][]来表示二维数组。  
  在Java中,对于每个对象来说都必须new来生成空间。  
  下面我简要分析一下前面的问题:  
   
  int   mArray[][]   =   new   int[5][];  
        上面一句定义了一个"二维数组",其实这就是一个一维向量数组。上面只是生成了5个向量元素的空间。而对于每个向量元素的空间还没分配。所以:  
                        mArray[m][n]   =   nCounter;        
  就产生了问题。  
  正确的方法eyeieye(魔之眼)已经写出来了。  
   
   
  Top

相关问题

  • 简单数组问题
  • 数组简单问题
  • 简单数组问题
  • 简单数组问题
  • 数组的简单问题
  • 简单数组求和
  • 简单问题===数组
  • 简单数组问题
  • 简单求教(如何将BYTE数组转换成char数组)
  • 简单问题,关于数组

关键词

  • arrayelementangle

得分解答快速导航

  • 帖主:zwp315
  • liushaohui
  • bigchina001
  • hardtoreg
  • knight_qmh
  • nichole
  • ddtqfly
  • eyeieye
  • wu4long

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo