2015-10-01 30 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:静态导入应该谨慎使用。检查我的编辑。 –

相关问题