Java中如何在一个方法内声明数组并在另一方法中使用该数组?
解决方案
你遇到的问题本质是Java局部变量的作用域限制:方法内部声明的变量仅在当前方法内有效,其他方法无法直接访问,要让两个静态方法共享数组和计数器,需要将其定义为类的静态成员变量。
另外你原代码还存在多处语法错误,我同步进行了修正,完整可运行的代码如下:
import java.util.Scanner; class Employee{ // 定义静态成员变量,供所有静态方法共享访问 private static final int MAX_SIZE = 20; private static Employee[] list = new Employee[MAX_SIZE]; private static int count = 0; // 记录当前存储的元素个数,替代你原来的局部变量n private String animal; // 变量名遵循小驼峰规范,避免大小写不一致导致的语法错误 private int quantity; Employee(String animal, int quantity){ this.animal = animal; this.quantity = quantity; } // 补全getter/setter的方法括号、参数和返回值类型 public String getAnimal() { return animal; } public void setAnimal(String animal) { this.animal = animal; } public int getQuantity() { return quantity; } public void setQuantity(int quantity) { this.quantity = quantity; } public static void input(){ if(count >= MAX_SIZE){ System.out.println("存储已满,无法继续添加"); return; } Scanner sc = new Scanner(System.in); System.out.print("请输入动物名称:"); String nameOfAnimal = sc.nextLine(); System.out.print("请输入动物数量:"); // 输入的字符串转int,匹配quantity的类型要求 int numberOfAnimal = Integer.parseInt(sc.nextLine()); list[count] = new Employee(nameOfAnimal, numberOfAnimal); count++; } public static void output(){ for(int i=0; i<count; i++){ System.out.println(" - " + list[i].getAnimal() + " - " + list[i].getQuantity()); } } // 测试入口 public static void main(String[] args) { // 测试添加2条数据 input(); input(); // 输出所有数据 output(); } }
核心修改点说明
- 共享变量提升为静态成员:将
list数组和元素计数器count定义为类的static属性,属于类全局共享,所有静态方法都可以直接访问 - 修正了原代码的语法问题:
- 补全了构造方法的闭合括号,getter/setter方法的参数列表和返回值类型匹配
- 修正了变量名大小写不一致的问题,避免编译报错
- 补充了输入时字符串转int的逻辑,解决String类型无法赋值给int参数的问题
- 增加了数组容量判断,避免数组越界异常
内容的提问来源于stack exchange,提问作者HuydeCoder
相关产品推荐
相关产品推荐

