咬了一下我的Java代码。我已经调整了下面的代码来给出一个简单的例子,答案仍然适用。基本上,
我有三个类文件:GUI,main,pipe1。
我的GUI接受变量的一些值:length
和height
。
然后它调用main.makePipe
,这是一个包含if语句的静态方法,然后创建一个名为pipe1
的新createdPipe
。样品:
public static void makePipe(double length, double width){
if(length > 0 && length < 4){
pipe createdPipe = new pipe1(length, height);
现在我的新createpipe
对象有一个名为basicCost
的方法,它返回管道的成本:
protected void calculateCost(){
double basicCost = height * length + 300;
return basicCost;
}
我一直坚持如何将这个返回值一直带回GUI类? 如果我运行(在我的GUI类中):
createdpipe.calculateCost();
它说无法找到符号。这是正确的。
如果我在main
中创建一个方法并放入:
public double finalCost(){
pipeCost = createdPipe.calculateCost();
return pipeCost;
}
并尝试从我的GUI(main.finalCost
)调用它我得到一个:非静态方法不能从静态上下文中引用。
我理解为什么,但是有人能告诉我如何让GUI类知道这个对象,或者我可以在pipe1类上计算数据并将数据返回给要使用的GUI类吗?
答案 0 :(得分:1)
createdPipe是一个局部变量,因此您需要更改此变量的范围。
你应该在main中声明对createdPipe对象的静态变量引用,如下所示:
private static pipe1 createdPipe;
更改makePipe方法,因此它将创建createdPipe:
public static void makePipe(double length, double width){
if(length > 0 && length < 4){
createdPipe = new pipe1(length, height);
然后你应该将finalCost声明为静态方法:
public static double finalCost()
因为createdPipe可以为null,你应该在finalCost方法中检查createdPipe是否为null。