在程序中开始先定义一个二维数组a[][]
第一维数通过getpara()从键盘读取N
在后边的程序中如何重定义
import java.io.*;
import java.util.*;
public class homework
{
int N;//需要加工的工件数
int a[][];//存储各个工件前期工件号数组
int b[];//判断工件是否被加工取值0,1 0表示未被加工1表示已加工
int c[][];//加工完第i工件后可选择加工的工件号
int d[];//加工次序数组
int Length[];//加工时存储各个工件的剩余前期工件数
 private int getpara()throws IOException
 {
  byte[] s=new byte[256];
  System.in.read(s);
  String str=new String(s).trim();
  int i=Integer.parseInt(str);
  return i;
 }
 private void setpara()
{
try{
   N=getpara();
   a=new int[N][];
   d=new int[N][];
   Length=new int[N][];
   c=new int[N][];
   b=new int[N][];
 for(int i=0;i<N;i++)
     {
      System.out.println("请输入第"+i+"个工件前期工件数");
      int m=getpara();
      a[i]=new int[m+1];
       a[i][0]=i;
      for(int j=1;j<a[i].length;j++)
       {
        System.out.println("请输入第"+i+"个工件前期工件的序号");
        a[i][j]=getpara();
        }
      }
}catch(IOException e){ System.out.println(e.getMessage()); }
}
private void process(int n,int i)
{
while(i<=14)
{
int m=0;
 d[i-1]=n;
b[i-1]=1;
if(i==14)
{for(int l=0;l<N;l++)
 System.out.print(d[i]+"  ");
 System.out.println();
}
for(int j=0;j<N;j++)
{
for(int k=0;k<a[i].length;k++)
{
 m=0;
if(a[j][k]==n)Length[j]=Length[j]-1;
if(Length[j]==0 && b[j]==0)m=m+1;
}
While(i<N-1)
{
c[i+1]=new int[m];
}
 m=0;
for(int k=1;k<a[j].length;k++)
{
if(a[j][k]==n && Length[j]==0 && b[j]==0){c[i+1][m]=a[j][0];m=m+1;}
}
for(int l=0;l<c[i+1].length;l++)process(c[i+1][l],i+1);
}
}
}
public static void main(String arg[]){
int i=0;
homework h=new homework();
h.setpara();
for(int M=0;M<a.length;M++)
{
 Length[M]=a[M].length-1;
  if(Length[M]==0)i=i+1;
}
c[0]=new int[i];
for(int L=0;L<i;L++)
{
 for(int M=0;M<a.length;M++)
   {
    if(Length[M]==0)
    {
     c[0][L]=a[M][0];
     h.process(c[0][L],1);
    }
   }
}}
}

解决方案 »

  1.   

    重定义数组维数只要再new一下就行了
    但是原来的数组数据就没有了
      

  2.   

    请jFresH_MaN(TM)帮我编译以下程序
    看一下错误谢谢您了
    import java.io.*;
    import java.util.*;
    public class homework
    {
    int N;//需要加工的工件数
    int a[][];//存储各个工件前期工件号数组
    int b[];//判断工件是否被加工取值0,1 0表示未被加工1表示已加工
    int c[][];//加工完第i工件后可选择加工的工件号
    int d[];//加工次序数组
    int Length[];//加工时存储各个工件的剩余前期工件数
     private int getpara()throws IOException
     {
      byte[] s=new byte[256];
      System.in.read(s);
      String str=new String(s).trim();
      int i=Integer.parseInt(str);
      return i;
     }
     private void setpara()
    {
    try{
       N=getpara();
       a=new int[N][];
       d=new int[N];
       Length=new int[N];
       c=new int[N][];
       b=new int[N];
     for(int i=0;i<N;i++)
         {
          System.out.println("请输入第"+i+"个工件前期工件数");
          int m=getpara();
          a[i]=new int[m+1];
           a[i][0]=i;
          for(int j=1;j<a[i].length;j++)
           {
            System.out.println("请输入第"+i+"个工件前期工件的序号");
            a[i][j]=getpara();
            }
          }
    }catch(IOException e){ System.out.println(e.getMessage()); }
    }
    private void process(int n,int i)
    {
    while(i<=14)
    {
    int m=0;
     d[i-1]=n;
    b[i-1]=1;
    if(i==14)
    {for(int l=0;l<N;l++)
     System.out.print(d[i]+"  ");
     System.out.println();
    }
    for(int j=0;j<N;j++)
    {
    for(int k=0;k<a[i].length;k++)
    {
     m=0;
    if(a[j][k]==n)Length[j]=Length[j]-1;
    if(Length[j]==0 && b[j]==0)m=m+1;
    }
    While(i<N-1)
    {
    c[i+1]=new int[m];
    }
     m=0;
    for(int k=1;k<a[j].length;k++)
    {
    if(a[j][k]==n && Length[j]==0 && b[j]==0){c[i+1][m]=a[j][0];m=m+1;}
    }
    for(int l=0;l<c[i+1].length;l++)process(c[i+1][l],i+1);
    }
    }
    }
    public static void main(String arg[]){
    int i=0;
    homework h=new homework();
    h.setpara();
    for(int M=0;M<a.length;M++)
    {
     Length[M]=a[M].length-1;
      if(Length[M]==0)i=i+1;
    }
    c[0]=new int[i];
    for(int L=0;L<i;L++)
    {
     for(int M=0;M<a.length;M++)
       {
        if(Length[M]==0)
        {
         c[0][L]=a[M][0];
         h.process(c[0][L],1);
        }
       }
    }}
    }
      

  3.   

    其中主要错误如下求助各位高手帮忙
    谢谢您了
    homework.java:84: non-static variable c cannot be referenced from a static conte
    xt
    c[0]=new int[i];
    ^
    homework.java:87: non-static variable a cannot be referenced from a static conte
    xt
     for(int M=0;M<a.length;M++)
                   ^
    homework.java:89: non-static variable Length cannot be referenced from a static
    context
        if(Length[M]==0)
           ^
    homework.java:91: non-static variable c cannot be referenced from a static conte
    xt
         c[0][L]=a[M][0];
         ^
    homework.java:91: non-static variable a cannot be referenced from a static conte
    xt
         c[0][L]=a[M][0];
                 ^
    homework.java:92: non-static variable c cannot be referenced from a static conte
    xt
         h.process(c[0][L],1);
                   ^
    12 errors