Java新手求助:calculateArea正常,调用calculatePrice时提示找不到area符号
解决Java中“找不到符号area”的问题
嗨,别担心,作为Java新手遇到这种变量作用域的问题完全是正常的!我们来一步步理清问题所在,然后解决它。
问题原因
你在main方法里调用calculatePrice(area)时,编译器找不到area这个变量——因为area是定义在calculateArea方法内部的局部变量,它的作用域只限于calculateArea方法里面,main方法是访问不到的。虽然calculateArea方法最后return area了,但你在main里调用这个方法时,没有把返回的结果保存到一个变量里,自然没法传给calculatePrice。
修复方案
有两种简单的方式可以解决这个问题:
方式1:将calculateArea的返回值保存到变量中
在main方法里,把调用calculateArea的结果赋值给一个变量(比如就叫area),然后把这个变量传给calculatePrice:
import java.util.Scanner; public class PaintCalculator { public static void main(String[] args) { double length; double width; Scanner keyboard = new Scanner(System.in); System.out.print("Enter the length >> "); length = keyboard.nextDouble(); System.out.print("Enter the width >> "); width = keyboard.nextDouble(); keyboard.nextLine(); // 保存calculateArea的返回值到main方法的area变量中 double area = calculateArea(length, width); calculatePrice(area); } public static double calculateArea (double length, double width) { double area; area = length * width; System.out.println("计算得到的面积是:" + area); return area; } public static void calculatePrice(double area) { // 这里注意:通常是每加仑油漆覆盖350平方单位,所以需要的加仑数应该是面积除以350,而不是乘以 double gallons = area / 350; // 如果需要向上取整(因为油漆不能买半加仑),可以用Math.ceil() // gallons = Math.ceil(area / 350); double price = gallons * 32; System.out.println("需要的油漆总价是:" + price); } }
方式2:直接将calculateArea的调用作为参数传给calculatePrice
你也可以不用额外变量,直接把calculateArea(length, width)作为参数传递给calculatePrice,这样更简洁:
// main方法里的代码修改成这样: calculatePrice(calculateArea(length, width));
额外提示
顺便提一下,你的calculatePrice方法里的逻辑可能有问题:一般来说,油漆的覆盖能力是每加仑覆盖350平方单位,所以需要的加仑数应该是面积 / 350,而不是面积 * 350——如果按你原来的代码,面积100的话会算出35000加仑,这显然不合理。如果需要购买整加仑的油漆,还可以用Math.ceil()方法向上取整,确保能覆盖全部面积。
内容的提问来源于stack exchange,提问作者Chan
相关产品推荐
相关产品推荐

