我的程序如何到达1的输出

时间:2018-11-28 22:31:51

标签: java parameters

好吧,所以我正在读高中的AP comp sci,我对程序达到A = 1的方式感到非常困惑,但看不到x和y的任何声明。谢谢

public class ClassA
{
    public static void main(String args[])
    {
        ClassA n = new ClassA(1 , 2);  
        int a = 0;
        a = n.methodA(a);
        System.out.println("a =" + a);


    }
    private int myNum1;
    private int myNum2;
    public ClassA(int x, int y)   
    {
        myNum1 = x;
        myNum2 = y;
    }

    public int methodA(int y)
    {
        return myNum1+y;

    }

    public int getMyNum1()
    {
        return myNum1;

    }

    public int getMyNum2()
    {
        return myNum2;
    }
}

3 个答案:

答案 0 :(得分:1)

用作构造函数的参数实际上并不重要。创建a并将其设置为0,然后将a设置为n.methodA(a),其中参数a为0,返回1。

您可以在构造函数调用中使用任何值,并且n.methodA(a)始终返回1。

在线搜索“ java visualizer”以获得一个不错的工具,该工具可以帮助您逐步了解程序的作用。

答案 1 :(得分:0)

对于对象ClassA n = new ClassA(1 , 2);myNum1 myNum2变为1,n变为2。

现在,当您致电n.methodA(a)时,实际上是在致电n.methodA(0),并且根据methodA的定义,它将返回myNum1+0 => 1+0 => 1

答案 2 :(得分:0)

这就是您的代码在做什么。

public static void main(String args[])
{
    ClassA n = new ClassA(1 , 2); // x = 1, y = 2
    int a = 0;
    a = n.methodA(a); // a = 1 + 0 = n.Method(a = 0) 
    System.out.println("a =" + a); // prints a = 1


}


 /** remember that myNum1 = x = 1, as stated in 
ClassA n = new ClassA(1 , 2) **/

public int methodA(int y) // int y = a = 0
{
    return myNum1+y; // return (myNum1* + y = 1 + 0)

}

n.Method(a)将返回 1 (因为0 + 1 = 1),它显示a = 1