我想要一个名为" number"的变量多次调用该方法时保持相同的值。它似乎在每个方法调用之间重置。我不明白为什么会这样,因为变量是在方法之外声明的。
这是第一堂课:
import java.util.Scanner;
public class Input {
public static void main(String[] args) {
for(int counter = 0; counter < 5; counter++) {
Output display = new Output();
display.outputNumber();
}
}
}
这是第二堂课:
public class Output {
int number;
public void outputNumber() {
number++;
System.out.println(number);
}
}
当我运行它时,它会输出
1
1
1
1
1
我希望它输出:
1
2
3
4
5
答案 0 :(得分:2)
在循环外移动这行代码:<5
应该可以得到所需的输出。
每次创建新对象时,该对象的编号都会初始化为0,这说明了当前的输出。 重用该对象会重复使用数字,因此您可以获得所需的输出。
答案 1 :(得分:1)
每次创建new Output()
时,都会创建一个从头开始的新对象。在这种情况下,您将创建5个新对象,每个对象只增加一次,并获得1个系列。
您可能希望在循环外部创建单个Output
,然后只需在循环内增加。这样它就是同一个对象,因此保持了这些值。
答案 2 :(得分:0)
为每个循环创建了Output
对象,并且number
类的Output
变量始终实例化为默认int值0
。因此,每次将0
增加到1
并仅显示1
。
您可以放弃递增number
类中的Output
变量,并在实际类中执行增量并将值传递给Output
类。
public class Output {
int number;
public Output (int number) {
this.number = number;
}
public void outputNumber() {
System.out.println(number);
}
}
并相应地将您对Output
课程的调用也从for
课程中的Input
循环更改。
您还可以将for
循环counter
变量实例从0
更改为1
,并将条件检查更改为<=5
而不是{{ 1}}。