package GroupLinks;import java.util.Stack;
import java.io.*;public class MyDisk {
    
    /**
     * Method main
     *
     *
     * @param args
     *
     */
     //构造函数
     MyBlock mb[];
     MyDisk(){
         int i;
         for(i=0;i<50;i++){
             mb[i]=new MyBlock();
             mb[i].Num=i;    
         }
     }
     //显示磁盘空间
     boolean DisplaySpace(){
         for(int i=0;i<50;i++)
             for(int j=0;j<10;j++)
                 log(mb[j].AssignSign);    
         return true;
     }
     
     void log(String s){
         System.out.println(s);
     }
     
      void log(int s){
         System.out.println(s);
     }
     
    public static void main(String[] args) {
        int i=0;
        MyDisk md = new MyDisk();
        PrintStream ps = System.out;
        ps.println("文件管理\n" + 
                   "1.新建文件\n" +
                   "2.删除文件\n" +
                   "3.检查文件一致性\n" +
                   "4.显示磁盘空间");
        ps.print("请输入你的选择:");
        try{
        i = System.in.read();
        i = i - 48;
        }catch(IOException e){
            e.printStackTrace();
        }
        switch(i){
            case 1:;break;
            case 2:;break;
            case 3:;break;
            case 4:md.DisplaySpace();break;
        }
    }    
}程序中涉及的类都已创建提示错误:            
Exception in thread "main" java.lang.NullPointerException
    at GroupLinks.MyDisk.<init><Mydisk.java:20>     mb[i]=new MyBlock();
    at GroupLinks.Mydisk.main<Mydisk.java:42>    MyDisk md = new MyDisk();
不知是什么原因,Main函数其所在的类是什么关系   请高人解答

解决方案 »

  1.   

    MyBlock mb[];
    改为
         MyBlock mb[50];
      

  2.   

    刚才错了。
         MyBlock[] mb = new MyBlock[50];
      

  3.   

    刚才没有注意。呵呵,这样最简单     MyDisk(){
             int i;
             mb = new MyBlock[50];
             for(i=0;i<50;i++){
                 mb[i]=new MyBlock();
                 mb[i].Num=i;    
             }如果是按我刚才的,需要加static.
      

  4.   

    请问:mb = new MyBlock[50];   
         不是已申请空间了吗?
         为什么还要  
         mb[i]=new MyBlock();
         再次申请呢?
      

  5.   

    MyBlock() //这个是什么?构造函数?
    如果是构造函数,则可以解释下面引用调用NUM
    ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
    请问:mb = new MyBlock[50];   
         不是已申请空间了吗?
         为什么还要  
         mb[i]=new MyBlock();
         再次申请呢?
    ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
    第一个实例化了一个数组对象,是个数组
    第二个实例化了一个数组元素,是个元素
      

  6.   

    请问:mb = new MyBlock[50];   
         不是已申请空间了吗?
         为什么还要  
         mb[i]=new MyBlock();
         再次申请呢?
    没有搞清楚数组和元素