循环内声明的数组在其外部无法识别

时间:2014-10-03 13:11:17

标签: java arrays loops

这是我正在为我的学校任务工作的计划中的一部分。 我需要的数组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);
}

2 个答案:

答案 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);
}