如何在方法中使用主数组?

时间:2013-10-13 09:26:27

标签: java

我想将用户输入用于合并排序,因此我在方法中使用数组ar[],但它为ar[]提供了“无法找到符号”错误。

import java.util.*;
import java.io.*;
class Test
{
int Merge()
    {
    int q,p,r,i,l,m,j,t,k,w,x,s,u;
    w=q-p+1;
    x=r-q;
    int[] L=new int [w+1];
    int b=1;
    for(s=1;s<=w+1;s++)
        {
        L[b]=s;
        b++;
        }
    int[] R=new int [x+1];
    int c=1;
    for(t=1;u<=x+1;u++)
        {
        R[c]=u;
        c++;
        }
    for(i=1;i<=w;i++)
        {
        L[i]=ar[p+i-1];
        }
    for(j=1;j<=x;j++)
        {
        R[j]=ar[q+j];
        }
    L[w+1]=1000;
    R[x+1]=1001;
    i=1;
    j=1;
    for(k=p;k<=r;k++)
        {
        if(L[i]<=R[j])
            {
            ar[k]=L[i];
            i=i+1;
            }
        else 
            {
            ar[k]=R[j];
            j=j+1;
            }
        }
    System.out.println("sorted array"+ar[k]);
    }

public static void main(String ar[])
    {
    int a0=Integer.parseInt (ar[0]);
    int a1=Integer.parseInt (ar[1]);
    int a2=Integer.parseInt (ar[2]);
    int a3=Integer.parseInt (ar[3]);
    int a4=Integer.parseInt (ar[4]);
    int a5=Integer.parseInt (ar[5]);
    int a6=Integer.parseInt (ar[6]);
    int a7=Integer.parseInt (ar[7]);
    int a8=Integer.parseInt (ar[8]);
    int a9=Integer.parseInt (ar[9]);
    int p=a0,r=a9,q;

    if(p<r)
       q=(p+r)/2;

    Test T=new Test();
    T.Merge();
    }
}

3 个答案:

答案 0 :(得分:1)

ar仅在main方法的范围内可见,在其他方法中未知。为了在其他方法中看到它,您需要有一个class member来保持其值。

答案 1 :(得分:1)

ar方法中有一个main局部变量,但您在Merge方法中没有。{1}}方法。局部变量和方法参数只是另一种局部变量,是..., local 到声明它们的方法。这意味着在另一种方法中这样的变量是未定义的。

例如,您可以

 class Test {
   final int[] ar;
   Test(int[] ar) { this.ar = ar; }

   public static void main(String[] ar) {
      ....
      final Test t = new Test(ar);
      t.Merge();
   }
 }

答案 2 :(得分:0)

ar仅在main方法中可见,您需要在main方法中创建一个新数组。将读取的值复制到新数组中,并将此数组作为输入传递给merge方法。