这是我正在为我的学校任务工作的计划中的一部分。 我需要的数组pc2 []只能(据我所见)在循环中分配,并且它在循环内也能正确打印。但是,当我想将它传递给函数ultra1()时,无法识别数组pc2 [] ... 如果有人有任何想法,请尽快分享。提前谢谢!
void ultra()
{
String pc[]={"Inspiron 14 3000 Series","Inspiron 15 3000 Series","Inspiron 11 3000 Series","Inspiron 15 - 7000 Series"};
int bud[]={30190,28390,30990,81990,123990,186690,69990,48890,34990,38190};
String pc3[]=new String[10];
System.out.println("Please enter your maximum budget");
int max=sc.nextInt();
for(int i=0;i<4;i++)
{
if(bud[i]<=max)
{
String pc2[]={pc[i],pc[i],pc[i],pc[i]};
System.out.println(pc2[i]);
}
}
ultra1(pc2);
}
答案 0 :(得分:1)
pc2
未定义在与ultra1(pc2);
相同的范围内。
pc2
仅存在于此处:
{
String pc2[]={pc[i],pc[i],pc[i],pc[i]};
System.out.println(pc2[i]);
}
您可以在与ultra1(pc2);
相同的范围内定义它:
String pc2[];
for(int i=0;i<4;i++)
{
if(bud[i]<=max)
{
pc2[]={pc[i],pc[i],pc[i],pc[i]};
System.out.println(pc2[i]);
}
}
ultra1(pc2);
答案 1 :(得分:1)
嗯,这显然是因为它被声明为INSIDE循环,因此只是一个临时对象,一旦循环就被删除(或者在你的情况下甚至在那之前,在if的花括号末尾)结束。
如果你想在之后访问它,它需要是一个非临时对象(或者至少在它被调用之前),所以你甚至需要在for循环之前声明它。
意思是它看起来像这样:
void ultra()
{
String pc[] = {"Inspiron 14 3000 Series","Inspiron 15 3000 Series","Inspiron 11 3000 Series","Inspiron 15 - 7000 Series"};
int bud[] = {30190,28390,30990,81990,123990,186690,69990,48890,34990,38190};
String pc3[] = new String[10];
System.out.println("Please enter your maximum budget");
int max = sc.nextInt();
String pc2[];
for(int i = 0; i < 4; i++)
{
if(bud[i] <= max)
{
pc2[] += {pc[i],pc[i],pc[i],pc[i]};
System.out.println(pc2[i]);
}
}
ultra1(pc2);
}