作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的一些 Java 代码有点卡住了。我已经调整了下面的代码以给出一个简单的例子,答案仍然适用。基本上,
我有三个类文件:GUI、main、pipe1。
我的 GUI 接受一些变量值:长度
和 高度
。然后,它调用 main.makePipe
,这是一个包含 if 语句的静态方法,然后创建一个名为 createdPipe
的新 pipe1
。示例:
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 类知道这个对象,或者如何计算 pipeline1 类上的数据并将数据返回到要使用的 GUI 类?
最佳答案
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。
关于java - 在由另一个方法创建的对象上调用一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20307594/
我是一名优秀的程序员,十分优秀!