我想将用户输入用于合并排序,因此我在方法中使用数组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();
}
}
答案 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方法。