Java—调用void方法并存储其值
这是一道过去的试卷上的题。该问题要求在新类中声明Java—调用void方法并存储其值,java,Java,这是一道过去的试卷上的题。该问题要求在新类中声明Counter类型的变量c。然后,我应该将其初始化为计数器的新实例,其中n的值为100。然后,我必须将其n字段增加两次。然后将n字段的值打印到System.out 这两门课我都上过,但我对Counter2课不太清楚。我想我可能是把计数器变量声明错了 public class Counter { private int n; public int x; public Counter(int theN){ th
Counter
类型的变量c
。然后,我应该将其初始化为计数器的新实例,其中n
的值为100。然后,我必须将其n
字段增加两次。然后将n
字段的值打印到System.out
这两门课我都上过,但我对Counter2
课不太清楚。我想我可能是把计数器
变量声明错了
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);
}
}
公共类计数器{
私人int n;
公共int x;
公共计数器(int-theN){
这个。n=然后;
}
公共int getN(){
返回n;
}
公共空间公司{
x=1+getN();
}
}
公共类柜台2{
计数器c;
公共整数递增两次(){
int i=0;
而(我
- 为什么要有一个while循环?为什么不在两行中增加它呢?我认为这会更清楚
- 就我个人而言,我不会在inc方法中使用getN()。这是类的公共接口。我会直接访问n变量,例如x=1+n
- 你不需要x和n。只需增加n。这可能会导致问题,因为你总是增加一个永远不会改变的值(n)。如果你想增加两次,你需要重新分配给n
我只要
n+=2
要在inc()
中向n添加两个,实际上并不是在增加n
。而是将x
设置为n+1
因此,无论您运行多少次inc
,在第一次运行之前,您将获得n=initial Value
和x=0
,在第一次运行之后,您将获得n=initialValue
和x=n+1
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)
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);
}
您从未两次调用increment
。您的主要任务应该是:
1) Set c.N = 100;
2) set finalResult = c.X (100)
3) Print finalResult (100)
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
假设n
是计数器的值,“声明计数器类型的变量c”并“将其初始化为新实例…取100”将按如下方式完成:计数器c=新计数器(100);
。将其值增加两倍将非常简单:
int value = c.getValue();
value++;
value++;
c.setValue(value);
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
}
}
…假设getValue()
被定义为获取计数器变量的方法
因此,把所有这些放在一起很简单:
int value = c.getValue();
value++;
value++;
c.setValue(value);
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
}
}
当然,这可以进一步简化——递增可以像在名为increment()
的计数器类中创建一个方法一样简单,例如,它只执行n++
,但这是解决方案的基本实现
(在计数器中实现增量()
@Nambari,刚刚尝试了静态,但它只打印了100。猜测我的while loopCounter c=新计数器(100)有问题;我不理解这个问题(标题更不理解)。在计数器2
中,您需要实际实例化计数器
,以便对其执行任何有用的操作,但不清楚您要执行的操作。我需要增加n
字段(100)两次。然后打印n
字段。目标是得到102。问题的第一部分要求我创建一个公共方法inc
,该方法在n
中添加1,但不返回任何结果。因此我猜我必须使用此方法将100增加到102。这不是你所做的。是的,谢谢我更改了inc()now@nsc010-inc()
方法最好是简单地n+=1
或n=n+1
甚至n++
;不需要调用getN()
既然你已经在计数器
类中了。@roddyoffrozenpeas,是的,谢谢你,这很有意义。我现在修改了我的代码。