2015-10-01 53 views
1

請幫助,我是新來的java。我必須使用數組,子例程來完成作業。這是到目前爲止我的代碼:錯誤:無法找到符號符號:變量mes位置:類ventasArreglo

import java.util.*; 
import static java.lang.System.out; 
public class ventasArreglo{ 
    static int dias, semanas, i, j; 
    static Scanner kb=new Scanner(System.in); 

    public static void main(String args[]){ 
    dias=5; 
    semanas=4; 
    int mes[][] = new int[semanas][dias]; 
    introducirDatos(); 

    } 

    static void introducirDatos(){ 
    for(i=0;i<semanas;i++){ 
     for(j=0;j<dias;j++){ 
     out.println("Cantidad de Ventas"); 
     mes[i][j]=kb.nextInt(); 
     } 
    } 
    } 
} 

但編譯後,我不斷收到此錯誤: 1個發現錯誤:[行:20]

Error: cannot find symbol 
    symbol: variable mes 
    location: class ventasArreglo 
+0

由於您的變量mes沒有爲整個類定義,而是爲主函數定義的,所以其他函數無法訪問它,您會收到錯誤消息。您可以將數組傳遞給函數,以便它可以訪問它。我建議你瞭解'可變範圍' –

回答

1

變量mes聲明應外移因此,它是靜態方法introducirDatos可見:

static int dias, semanas; 
    static int[][] mes; 

    public static void main(String[] args) { 
     dias=5; 
     semanas=4; 
     mes = new int[semanas][dias]; 
     introducirDatos(); 

    } 
    static void introducirDatos(){ 
     Scanner kb=new Scanner(System.in); 
     for(int i=0;i<semanas;i++){ 
      for(int j=0;j<dias;j++){ 
       out.println("Cantidad de Ventas"); 
       mes[i][j]=kb.nextInt(); 
      } 
     } 
    } 

而且Scanner應該在我體內移動這是真正需要的地方,而不是在頂層聲明它是靜態的。循環計數器也不需要處於頂層。

但爲什麼你使用靜態導入?我們應該謹慎地使用它們。正如doc提到:

So when should you use static import? Very sparingly! Only use it when you'd otherwise be tempted to declare local copies of constants, or to abuse inheritance (the Constant Interface Antipattern). ... If you overuse the static import feature, it can make your program unreadable and unmaintainable, polluting its namespace with all the static members you import.

入住這link爲好。

+0

我不確定爲什麼我們要使用靜態導入,我的老師說我們稍後會進一步研究。他說我們應該使用它們。 – ricardoryz

+0

@ricardoryz:靜態導入應該謹慎使用。檢查我的編輯。 –

相關問題