程序如下
在方法exchange中的array1,和下面的exchange调用中有错误package com;public class Gaosi 
{
        static int  n=9;
        static float  array1[];
        static float  array2[];
        static float array [][];
       public static float exchange(array1,array2)
       {
        float t;
        int i;
        for(i=0;i <=n-1;i++) 
        { 
        t=array1[i];array1[i]=array2[i];array2[i]=t;} 
        }         public static void xiaoyuan(float array1[][],int t)
        {
         int i,j;
         for(i=t+1;i <=n-1;i++)
         { 
         if(array1[t][t]==0) 
         continue; 
         else 
         for(j=t;j <=n;j++) 
         { 
         array1[i][j]=array1[i][j]-array1[t][j]*array1[i][t]/array1[t][t]; 
         } 
         }         }
        
        
        
        public static void putarray(float array[][])
        {
         int i,j; 
         for(i=0;i <=n-1;i++){ 
         for(j=0;j <=n;j++)
         {
         System.out.println(array[i][j]);
         }
        }
        }  
        
        
        
        public void start()
        {
         int i,j,k; 
     float sum=0; 
     float X[]=new float[]{0}; 
     float matrix[][]= 
     { 
     {31,-13,0,0,0,-10,0,0,0,-15}, 
     {-13,35,-9,0,-11,0,0,0,0,27}, 
     {0,-9,31,-10,0,0,0,0,0,-23}, 
     {0,0,-10,79,-30,0,0,0,-9,0}, 
     };  
             for(i=0;i<n-1;i++)
             {
              k=i;
              for(j=i;j <=n-1;j++) 
              {
              if(Math.abs(matrix[j][i])>Math.abs(matrix[k][k]))
              k=j;
              }
              
              if(i!=k) 
              {
               exchange(matrix[i],matrix[k]);              
               xiaoyuan(matrix,i); 
              }
             }
             putarray(matrix);
             for(i=n-1;i>=0;i--) 
             {                       
             for(j=n-1;j>=i;j--) 
             { 
             sum=sum+X[j]*matrix[i][j]; 
             } 
             X[i]=(matrix[i][n]-sum)/matrix[i][i]; 
             sum=0;} 
             for(i=0;i <=n-1;i++) 
             { 
             System.out.println("x["+i+"]="+X[i]);
             }         }
         public static void main(String args[])
         {
         Gaosi g=new Gaosi();
         g.start();
         }
}

解决方案 »

  1.   

    public static void main(String[] args) {        float matrix[][] = {
                {31, -13, 0, 0, 0, -10, 0, 0, 0, -15},
                {-13, 35, -9, 0, -11, 0, 0, 0, 0, 27},
                {0, -9, 31, -10, 0, 0, 0, 0, 0, -23},
                {0, 0, -10, 79, -30, 0, 0, 0, -9, 0},};
    //        Main g = new Main();
    //        g.start();
            float[][] tt = g(matrix);
            for (int i = 0, j = 0, im = tt.length, jm = tt[0].length; i < im; i++) {
                System.out.print("{");
                for (j = 0; j < jm; j++) {
                    System.out.print(tt[i][j]);
                    if (j < jm - 1) {
                        System.out.print(",");
                    }
                }
                if (i < im - 1) {
                    System.out.print(",");
                }
                System.out.println("}");
            }
        }    public static float[][] g(final float[][] ftem) {
            float[][] tem = new float[ftem.length][];
            System.arraycopy(ftem, 0, tem, 0, tem.length);
            for (int i = 0, im = tem.length, lm = tem[0].length; i < im; i++) {
                for (int j = i + 1; j < im; j++) {
                    if(tem[j][i]==0)
                        continue;
                    float n = tem[i][i] / tem[j][i];
                    for (int k = i; k < lm; k++) {
                        tem[j][k] = -tem[j][k] * n + tem[i][i];
                    }
                }
            }
            return tem;
        }
      

  2.   

    我有点看不懂了呢,呵呵,JAVA不好,不要见怪,能请你帮我把程序补全么,谢谢了,因为是新手,刚学算法
      

  3.   

    看不懂,确定这里不是n-1?
            public static void putarray(float array[][])
            {
                int i,j; 
                for(i=0;i <=n-1;i++){ 
                for(j=0;j <=n;j++)
                {
                System.out.println(array[i][j]);    
                }
            }
            }      
                
      

  4.   

    问题1:public static float exchange(float array1,float array2)//指明参数类型,要加float问题2: float t;//这里是float类型
     int i;
     for(i=0;i <=n-1;i++) 

      t = array1[i];//你这里是把一个float[]数组给了一个float,这就是出错的原因
      array1[i]= array2[i];//同上
      array2[i] = t;问题3:exchange(matrix[i],matrix[k]);    
    //使用的时候参数类型要与上面一个类型,而且二维数组用法错误,需要后面一个[],matrix[i][],问题4:Gaosi g=new Gaosi(); //类名拼错
      

  5.   

    还有,只要不是void修饰的方法,都需要一个返回值...
      

  6.   


    /**补全后的错误是数组越界,debug下就可以看到了
    */
    /*看下这个是不是你想得出的结果
    run:
    {31.0,-13.0,0.0,0.0,0.0,-10.0,0.0,0.0,0.0,-15.0,}
    {0.0,114.46154,9.538462,31.0,4.76923,31.0,31.0,31.0,31.0,95.38461,}
    {0.0,0.0,508.71796,-12.717949,114.46154,114.46154,114.46154,114.46154,114.46154,-178.05127,}
    {0.0,0.0,0.0,4527.59,-1017.43585,508.71796,508.71796,508.71796,50.871796,508.71796}
    成功生成(总时间:0 秒)*/
    package com;public class Gaosi 
    {
        public static void main(String[] args) {        float matrix[][] = {
                {31, -13, 0, 0, 0, -10, 0, 0, 0, -15},
                {-13, 35, -9, 0, -11, 0, 0, 0, 0, 27},
                {0, -9, 31, -10, 0, 0, 0, 0, 0, -23},
                {0, 0, -10, 79, -30, 0, 0, 0, -9, 0},};
    //        Main g = new Main();
    //        g.start();
            float[][] tt = g(matrix);
            for (int i = 0, j = 0, im = tt.length, jm = tt[0].length; i < im; i++) {
                System.out.print("{");
                for (j = 0; j < jm; j++) {
                    System.out.print(tt[i][j]);
                    if (j < jm - 1) {
                        System.out.print(",");
                    }
                }
                if (i < im - 1) {
                    System.out.print(",");
                }
                System.out.println("}");
            }
        }    public static float[][] g(final float[][] ftem) {
            float[][] tem = new float[ftem.length][];
            System.arraycopy(ftem, 0, tem, 0, tem.length);
            for (int i = 0, im = tem.length, lm = tem[0].length; i < im; i++) {
                for (int j = i + 1; j < im; j++) {
                    if (tem[j][i] == 0) {
                        continue;
                    }
                    float n = tem[i][i] / tem[j][i];
                    for (int k = i; k < lm; k++) {
                        tem[j][k] = -tem[j][k] * n + tem[i][i];
                    }
                }
            }
            return tem;
        }
    }