【发布时间】:2016-03-09 20:13:10
【问题描述】:
我一直在尝试通过阅读“Java 如何对早期对象进行编程”来了解如何从同一类的另一个方法中调用方法。
此刻我完全迷失了,书中使用的类比让我很容易想象正在发生的事情。但是,将其转换为代码具有挑战性。
我已经尝试了很多次来解决这个问题并且已经走到了这一步: P.S. 为了简单起见,我排除了我认为对我的问题不重要的代码...
import java.util.Scanner;
public class BuyAHouseInc
{
private int housePrice;
private int amountOfHouses;
private int houseCounter;
// method to enter the amount of houses on sale
public void setAmountOfHouses()
{
// do stuff etc.
}
// method that sets the house price
public void setHousePrice()
{
// do stuff etc.
calculateFees(this.housePrice); // this is where I'm not sure...
}
//method to calculate fees and taxes
public void calculateFees(int housePrice) // does this receive this.housePrice?
{
// do some stuff
}
测试代码:
public class BuyAHouseIncTester
{
public static void main(String[] args)
{
BuyAHouseInc client1 = new BuyAHouseInc("John","Doyle","15 Newton Drive\nDublin 5\n", 550000) // Create object
// set amount of houses on sale to client 1
client1.setAmountOfHouses();
// set house price for each of the houses added to database
client1.setHousePrice();
}
}
在另一个方法中调用一个方法的代码是什么?是否调用了每个单独房价的值?
【问题讨论】:
-
再一次,为什么不放一些 System.out.println() 语句并测试它,或者使用调试器运行它?您问“是否会调用每个单独房价的值?”。但他的问题没有意义:这段代码中有一个 single housePrice。
-
AFAIK,除非你使用
static imports,否则非限定方法调用(比如说x())只能解释为this.x()或super.x(),this.x()优先。 (例外:在内部类的情况下,它也可以解释为EnclosingClass.this.x()。那么不确定优先级。) -
没有代码提示什么。根本没有循环。您在问自己 calculateFees 是否收到 this.housePrice。所以在调用 calculateFees() 方法之前打印 this.housePrice(),并在 calculateFees() 打印 housePrice 参数。
-
@JB Nizet 我在代码背后的想法是,您输入第一个房价并在calculateFees 方法中执行所有代码,然后提示用户输入第二个房价,依此类推。您会将打印语句放在哪里来调试代码?
-
@JBNizet 正如我所料,它会打印我输入的最后一个房价。我将如何将每个房价传递给我程序中的所有方法并“对第一所房子做一些事情”,然后我进入第二所房子等等。