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

问题描述:

这是我正在为我的作业工作的程序中的一部分。 我需要的数组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); 
} 
+0

PC2 [] = {PC [I]中,PC [I]中,PC [I]中,PC [I]}; - 谢谢,但现在它给出了错误,'不是一个声明'和';预期'。有任何想法吗? – 2014-10-04 04:19:32

+0

嗯,它是PC [] = ...之前,应该与PC [] + = ...现在 – blueBurningCoder 2014-10-04 07:12:39