【问题标题】:Error: cannot find symbol symbol: variable mes location: class ventasArreglo错误:找不到符号符号:变量 mes 位置:类 ventasArreglo
【发布时间】:2015-10-01 00:02:49
【问题描述】:

请帮忙,我是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 个错误:[行:20]

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

【问题讨论】:

  • 您收到错误,因为您的变量 me 不是为整个类定义的,而是为 main 函数定义的,因此其他函数无法访问它。您可以将数组传递给函数,以便它可以访问它。我建议您了解“可变范围”

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


【解决方案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中提到的:

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

也检查这个link

【讨论】:

  • 我不确定我们为什么要使用静态导入,我的老师说我们稍后会深入研究。他说我们应该使用它们。
  • @ricardoryz:静态导入应该谨慎使用。检查我的编辑。
猜你喜欢
  • 2019-04-10
  • 2014-12-12
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多