2014-10-03 64 views
0

這是我正在爲我的作業工作的程序中的一部分。 我需要的數組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); 
} 

回答

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

嗯,這顯然是因爲它的聲明裏面的循環,因此只是暫時的對象,只要循環(或者在你的情況下,甚至在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

相關問題