错误:找不到符号符号:变量mes位置:class ventasArreglo

时间:2015-10-01 00:02:49

标签: java arrays for-loop multidimensional-array subroutine

请帮助,我是java的新手。我必须使用数组,for和子程序来完成家庭作业。到目前为止,这是我的代码:

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错误:[line:20]

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

1 个答案:

答案 0 :(得分: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中所述:

  

那么什么时候应该使用静态导入?非常谨慎!只在使用时使用它   否则你会想要声明常量的本地副本,或者   滥用继承(Constant Interface Antipattern)。 ... 如果你   过度使用静态导入功能,它可以使您的程序不可读   并且不可维护,用所有静态污染其命名空间   您导入的成员。

同时检查link