请各位前辈帮忙看看,指导下。我刚学。
不能在static方法中调用非static方法。我想调用setvalue方法的话该如何呢?public class multiarraytest
{
  boolean b;
  public static void main(String args[])
  {
    setvalue(2,3,'A');
    setvalue(3,5,'B');       //  就是这里的调用出问题了,不能在static方法中调用非static方法。我想调用setvalue方法的话该如何呢?
  }
    void setvalue(int hang,int lie,char x)
   {
     if(b==false)
     {
       double arrayname1[][];
       arrayname1=new double[hang][];
       System.out.println("数组"+x+" 初始化为:");
       for(int i=0;i<hang;i++)
       {
         arrayname1[i]=new double[lie];
         for(int j=0;j<lie;j++)
         {
           arrayname1[i][j]=(double)(i*2+j);    
           System.out.print(arrayname1[i][j]);
         }
         System.out.println("");
       }
       b=true; 
     }
     else
     {
        double arrayname2[][];
        arrayname2=new double[hang][];
        System.out.println("数组"+x+" 初始化为:");
        for(int i=0;i<hang;i++)
        {
          arrayname2[i]=new double[lie];
          for(int j=0;j<lie;j++)
          {
            arrayname2[i][j]=(double)(i*2+j);
            System.out.print(arrayname1[i][j]);
          }
          System.out.println("");
        } 
        b=false;   
     }
    }
}

解决方案 »

  1.   

    把setvalue设为static或者在main中new一个对象。static是在class加载时就加载的
      

  2.   

    应该这样调用。public class multiarraytest 

      boolean b; 
      public static void main(String args[]) 
      {
          multiarraytest array = new multiarraytest();
          array.setvalue(2,3,'A'); 
          array.setvalue(3,5,'B');      //  就是这里的调用出问题了,不能在static方法中调用非static方法。我想调用setvalue方法的话该如何呢? 
      } 
        void setvalue(int hang,int lie,char x) 
      { 
        if(b==false) 
        { 
          double arrayname1[][]; 
          arrayname1=new double[hang][]; 
          System.out.println("数组"+x+" 初始化为:"); 
          for(int i=0;i <hang;i++) 
          { 
            arrayname1[i]=new double[lie]; 
            for(int j=0;j <lie;j++) 
            { 
              arrayname1[i][j]=(double)(i*2+j);    
              System.out.print(arrayname1[i][j]); 
            } 
            System.out.println(""); 
          } 
          b=true; 
        } 
        else 
        { 
            double arrayname2[][]; 
            arrayname2=new double[hang][]; 
            System.out.println("数组"+x+" 初始化为:"); 
            for(int i=0;i <hang;i++) 
            { 
              arrayname2[i]=new double[lie]; 
              for(int j=0;j <lie;j++) 
              { 
                arrayname2[i][j]=(double)(i*2+j); 
                System.out.print(arrayname2[i][j]); 
              } 
              System.out.println(""); 
            } 
            b=false;  
        } 
        } 
    }
      

  3.   

    public class Multiarraytest {
    boolean b; public static void main(String args[]) {
    Multiarraytest multiarraytest = new Multiarraytest();
    multiarraytest.setvalue(2, 3, 'A');
    multiarraytest.setvalue(3, 5, 'B');
    } void setvalue(int hang, int lie, char x) {
    if (b == false) {
    double arrayname1[][] = new double[hang][];
    System.out.println("数组" + x + " 初始化为:");
    for (int i = 0; i < hang; i++) {
    arrayname1[i] = new double[lie];
    for (int j = 0; j < lie; j++) {
    arrayname1[i][j] = (double) (i * 2 + j);
    System.out.print(arrayname1[i][j] + "   ");
    }
    System.out.println("");
    }
    b = true;
    } else {
    double arrayname2[][] = new double[hang][];
    System.out.println("数组" + x + " 初始化为:");
    for (int i = 0; i < hang; i++) {
    arrayname2[i] = new double[lie];
    for (int j = 0; j < lie; j++) {
    arrayname2[i][j] = (double) (i * 2 + j);
    System.out.print(arrayname2[i][j] + "   ");
    }
    System.out.println("");
    }
    b = false;
    }
    }
    }
      

  4.   

    New 出那个对象再调方法吗。要不就把那个改成静态方法