这是过去的试卷中的一个问题。该问题要求在新类中声明类型为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);
}
}
答案 0 :(得分:3)
在inc()
中,您实际上并没有递增n
。您将x
设置为n+1
。
因此,在第一次运行之前,inc
运行n = initial Value
并且在第一次运行之后x=0
和n = 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)
我个人不会在你的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++