在循环中声明的数组无法在其外部识别
问题描述:
这是我正在为我的作业工作的程序中的一部分。 我需要的数组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);
}
答
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);
答
嗯,这显然是因为它的声明里面的循环,因此只是暂时的对象,只要循环(或者在你的情况下,甚至在if之前的大括号结尾处)结束,get就被删除。
如果您想在此之后访问它,它需要是非临时对象(或至少在被调用之前),所以您甚至需要在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);
}
PC2 [] = {PC [I]中,PC [I]中,PC [I]中,PC [I]}; - 谢谢,但现在它给出了错误,'不是一个声明'和';预期'。有任何想法吗? – 2014-10-04 04:19:32
嗯,它是PC [] = ...之前,应该与PC [] + = ...现在 – blueBurningCoder 2014-10-04 07:12:39