Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从同一类(java)中的另一个方法调用方法_Java_Oop_Methods - Fatal编程技术网

如何从同一类(java)中的另一个方法调用方法

如何从同一类(java)中的另一个方法调用方法,java,oop,methods,Java,Oop,Methods,通过阅读“Java如何编程早期对象”,我一直试图理解如何从同一类的另一个方法内部调用一个方法 我现在完全不知所措,书中使用的类比使我很容易想象发生了什么。然而,将其转换为代码是一项挑战 我已经尝试了很多次来解决这个问题,并且已经走到了这一步: P.S.为了简单起见,我排除了我认为对我的问题不重要的代码… 测试仪代码: public class BuyAHouseIncTester { public static void main(String[] args) {

通过阅读“Java如何编程早期对象”,我一直试图理解如何从同一类的另一个方法内部调用一个方法

我现在完全不知所措,书中使用的类比使我很容易想象发生了什么。然而,将其转换为代码是一项挑战

我已经尝试了很多次来解决这个问题,并且已经走到了这一步: P.S.为了简单起见,我排除了我认为对我的问题不重要的代码…

测试仪代码:

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);