Java - 调用void方法并存储它们的值

时间:2012-08-28 16:15:42

标签: java

这是过去的试卷中的一个问题。该问题要求在新类中声明类型为c的变量Counter。然后,我应该将其初始化为Counter的新实例,其中n的值为100.我必须将其n字段增加两次。然后将n字段的值打印到System.out

我已经完成了两个课程,但我不确定Counter2课程。我想我可能会宣布Counter变量错误。

public class Counter {
    private int n;
    public int x;

    public Counter(int theN){
        this.n=theN;
    }

    public int getN(){
        return n;
    }

    public void inc(){
        x = 1+ getN();
    }
}

public class Counter2{
    Counter c;

    public int incrementTwice(){
        int i = 0;

        while(i<2){
            c.inc();
            i++;
        }
        return c.x;
    }

    public static void main (String[] args){
        c = new Counter(100);
        int finalResult = c.getN();
        System.out.println(finalResult);
    }
}

4 个答案:

答案 0 :(得分:3)

inc()中,您实际上并没有递增n。您将x设置为n+1

因此,在第一次运行之前,inc运行n = initial Value并且在第一次运行之后x=0n = initialValue运行x = n + 1次数并不重要{{1} }和{{1}}

答案 1 :(得分:2)

public static void main (String[] args){

    c = new Counter(100);

    int finalResult = c.getN();
    System.out.println(finalResult);
}

我希望输出为100

调用堆栈如下:

1) Set c.N = 100;  
2) set finalResult = c.X (100)  
3) Print finalResult (100)

您永远不会拨打incrementTwice。你的主要应该是:

public static void main (String[] args){
    Counter2 counter2 = new Counter2();  
    counter2.c.n = 100;  
    counter2.incrementTwice();
    int finalResult = counter2.c.getN();
    System.out.println(finalResult);
}

关键是inc()您要添加到x而不是添加到n,因此您需要返回x

答案 2 :(得分:1)

  • 为什么要有一个while循环?为什么不在两行中增加它。我认为这会更清楚
  • 我个人不会在你的inc方法中使用getN()。这是该类的公共接口。我会直接访问n变量,例如x = 1 + n;

  • 你不需要x和n。只是递增n。这可能会导致问题,因为您总是递增一个永不改变的值(n)。如果要增加两次,则需要重新分配给n。

我会做的只是

n+=2

将两个添加到n

答案 3 :(得分:1)

假设n是计数器的值,“声明类型为Counter的变量c”并“将其初始化为新实例...取值为100”将完成如下:{{ 1}}。两次增加它的值就像这样简单:

Counter c = new Counter(100);

...假设int value = c.getValue(); value++; value++; c.setValue(value); 被定义为获取Counter变量的方法。

所以把它们放在一起就像这样简单:

getValue()

当然这可以进一步简化 - 增量可以像在名为public class MyClass { private Counter c; public MyClass() { c = new Counter(100); } public void increment() { int value = c.getValue(); value++; c.setValue(value); } public void printCounterValue() { System.out.println(c.getValue()); } public static void main(String[] args) { MyClass instance = new MyClass(); // creates new class with Counter c initialized to 100 instance.increment(); // increment once instance.increment(); // increment twice instance.printCounterValue(); // print to screen } } 的{​​{1}}类中创建方法一样简单,例如,只需要Counter - 但是这样是解决方案的基本实现。

(在Counter中实现increment()看起来像这样:)

n++