如何从同一类(java)中的另一个方法调用方法
通过阅读“Java如何编程早期对象”,我一直试图理解如何从同一类的另一个方法内部调用一个方法 我现在完全不知所措,书中使用的类比使我很容易想象发生了什么。然而,将其转换为代码是一项挑战 我已经尝试了很多次来解决这个问题,并且已经走到了这一步: P.S.为了简单起见,我排除了我认为对我的问题不重要的代码… 测试仪代码:如何从同一类(java)中的另一个方法调用方法,java,oop,methods,Java,Oop,Methods,通过阅读“Java如何编程早期对象”,我一直试图理解如何从同一类的另一个方法内部调用一个方法 我现在完全不知所措,书中使用的类比使我很容易想象发生了什么。然而,将其转换为代码是一项挑战 我已经尝试了很多次来解决这个问题,并且已经走到了这一步: P.S.为了简单起见,我排除了我认为对我的问题不重要的代码… 测试仪代码: public class BuyAHouseIncTester { public static void main(String[] args) {
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();
}
}
在另一个方法中调用一个方法的代码是什么?每个房价的价值都会被计算出来吗 你可以简单地调用
calculateFees(房价)
作为调用时唯一可见的housePrice
变量是实例变量
private int housePrice代码>
假设您有一个构造函数
调用,根据您创建BuyAHouseInc
//计算费用和税费的方法
public void calculateFees(int housePrice)//这是否收到this.housePrice?
{
//做点什么
}
是的,这将接收通过calculateFees(房价)传递的housePrice
代码>
calculateFees(国际房价)
上面定义的局部变量仅在calculateFees(int housePrice){…}
方法中可见
更新:根据评论,您需要更新setter以通过房价
public void setHousePrice(int housePrice)
{
this.housePrice = housePrice;
calculateFees(this.housePrice);
}
是的,你的假设是正确的
然而,有一些重要的事情需要注意。此代码:
public void setHousePrice()
{
// do stuff etc.
calculateFees(this.housePrice); // <---This probably doesn't do what you think it does
}
// No. This doesn't receive this.housePrice. It receives the VALUE of this.housePrice.
// It's a completely new variable
public void calculateFees(int housePrice) .
{
// do some stuff
}
public void setHousePrice()
{
//做事等。
计算费用(这是房价);//
在不同的文件中分隔这两个类。另外需要指出的是,在price中使用double而不是int。
您还必须创建getter和setter,以便能够获取和设置属性。
您还必须在类中添加构造函数。然后您可以在main中创建该类的实例并调用其方法。
主要方法如下所示
public class Main {
public static void main(String... args) {
BuyAHouseInc test = new BuyAHouseInc(200000, 4, 2);
test.setAmountOfHouses(6); // changed from 4 to 6
test.generateHousePrice();
test.calculateFees(test.getHousePrice());
test.toString();
}
}
希望这对您有所帮助,祝您好运!我已经编辑了代码并添加了toString方法以字符串形式输出信息。如果我错了,请纠正我,但这是一种可能的解决方案:
public void setHousePrice(int price)
{
calculateFees(price);
}
public void calculateFees(int housePrice)
{
// stuff with housePrice
}
那就做吧
variable.setHousePrice(variable.getHousePrice);
同样,为什么不放一些System.out.println()语句并测试它,或者使用调试器运行它呢?你会问“每个房价的值都被调用了吗?”。但是他的问题没有意义:在这个代码中只有一个房价。AFAIK,除非你使用非限定的方法调用(比如对x()
)只能解释为this.x()
或super.x()
,以this.x()
为准。(例外:对于内部类,它也可以解释为EnclosingClass.this.x()
。然后不确定优先级。)没有任何代码提示任何内容。根本没有循环。您会问自己calculateFees是否收到此.housePrice。因此,请在调用calculateFees()方法之前打印此.housePrice(),并在calculateFees()中打印housePrice参数@JB Nizet我在代码背后的想法是,您输入第一个房价,然后使用calculateFees方法执行所有代码,然后提示用户输入第二个房价,依此类推。您将在哪里放置print语句来调试代码?@JBNizet正如我所料,它将打印我输入的最后一个房价。我将如何通过每个房价p赖斯对我的程序中的所有方法表示感谢,并“为第一宫做些事情”然后我进入第二宫,以此类推。谢谢你,我会尝试一下我尝试过的所有方法,但我在tester类中遇到了一个错误…方法不能应用于给定的类型,类型是双重的,没有参数…你能解释一下这里出了什么问题吗?你对BuyAHouseInc
有构造函数调用吗?\n如果你如果您有错误,请发布堆栈跟踪。猜测您传递的是一个双精度(带小数点的数字)而不是整数。在我的完整版本的代码中,我有一个构造函数,但我只传递客户的详细信息,例如姓名、地址和预算。我没有在构造函数中传递任何房价或类似的内容。哦!这是一个全新的变量…这很有帮助!所以要存储这个。housePrice计算项(int housePrice)参数不能有相同的名称,所以将其从housePrice更改为houseCost?名称可以相同。这里有点奇怪。假设您在calculateFees(housePrice)中,housePrice
将引用传入的值。this.housePrice
将引用属于对象的成员变量。我对Java有一种爱恨关系……我将继续使用代码,我确信我会让它工作,我的知识处于初级水平,所以我正在修补我所掌握的东西这是我找到的最好的学习方法。
public void setHousePrice(int price)
{
calculateFees(price);
}
public void calculateFees(int housePrice)
{
// stuff with housePrice
}
variable.setHousePrice(variable.getHousePrice);