Java多方法间通过实参和形参访问变量的实现方法咨询
解决Java中跨方法访问变量的问题
咱们先拆解下你的问题哈:你在addition()方法里定义的c是局部变量,它的作用域只限于addition()方法内部,所以result()方法根本"看不到"这个变量,这就是为啥会报"variable is not defined"的错误。下面给你几种实用的解决办法:
方法1:把变量提升为类的实例变量
把需要共享的变量定义在类的级别(所有方法外面),这样同一个类里的所有方法都能访问它:
public class Example { // 把c定义为实例变量,类内所有方法都能访问 private int c; public void addition() { int a = 0; int b = 10; c = a + b; // 给实例变量赋值 } public void result() { System.out.println("The result for the above addition is " + c); } }
注意:记得先调用addition()给c赋值,再调用result(),不然c会是默认值0哦。
方法2:通过方法返回值传递
让addition()直接返回计算结果,然后在result()里调用它拿到值,这种方式更符合方法的单一职责,灵活性也更强:
public class Example { public int addition() { int a = 0; int b = 10; return a + b; // 返回计算结果 } public void result() { int c = addition(); // 调用addition()拿到返回值 System.out.println("The result for the above addition is " + c); } }
如果需要传递多个值,还可以返回自定义对象或者数组,但这个场景用单个返回值就足够了。
方法3:通过方法参数传递
把result()设计成带形参的方法,调用时将计算好的结果作为实参传入,这种方式能让result()的复用性更强:
public class Example { public int addition() { int a = 0; int b = 10; return a + b; } // 给result()添加形参,接收外部传入的结果 public void result(int calculationResult) { System.out.println("The result for the above addition is " + calculationResult); } // 示例调用逻辑 public static void main(String[] args) { Example ex = new Example(); int res = ex.addition(); ex.result(res); // 把实参res传给result()的形参calculationResult } }
总结一下:局部变量的作用域仅限于定义它的方法,跨方法访问的话,要么把变量提升到类级别,要么用返回值/参数传递的方式。根据你的实际业务场景选最合适的就行~
内容的提问来源于stack exchange,提问作者roydenrahul
相关产品推荐
相关产品推荐

