the*_*lip 0 java io static file
更新::好的我在这里提出原始问题陈述
给定Main类创建一个方法createPerson并在任何其他方法中多次调用它,然后根据createPerson执行的次数,您必须初始化对象并输入学生的名称并输出名称.
一旦我开始知道有多少物体,我必须创建它,以便对后期部分进行编程
对于找到要创建的对象数量的先前问题,我选择了文件处理的方式,因为我来自C,C++背景,其中文件处理相对简单.
现在应该如何修改程序,以便我在文件中写入一个整数,稍后当我将读取文件时,我将获得对象的数量
这个例子中禁止使用静态变量,它是一种脑筋急转弯,这样做不使用静态
这是我的Main.java文件
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException{
int i;
Student[] totalStudents = new Student[10];
Student.create3Persons();
Student.create2Persons();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的Student.java文件
import java.io.*;
public class Student {
private static void createPerson() throws IOException{
int number=0;
File file = new File("arg.txt", null);
FileOutputStream fos = new FileOutputStream(file);
DataOutputStream dos = new DataOutputStream(fos);
FileInputStream fis = new FileInputStream(file);
DataInputStream dis = new DataInputStream(fis);
while(dis.readInt()!= -1)
{
number++;
dos.writeInt(1);
}
}
static void create2Persons() throws IOException{
Student.createPerson();
Student.createPerson();
}
static void create3Persons() throws IOException{
Student.createPerson();
Student.createPerson();
Student.createPerson();
}
}
Run Code Online (Sandbox Code Playgroud)
我应该如何修改这个程序,以便我计算函数createPerson被调用了多少次?
如果要计算静态方法的调用次数,则必须使用静态变量 - 它是真正的全局状态.编辑:是的,您可以使用文件系统作为全球州的另一个存储库,但我个人说这通常是一个坏主意 - 特别是如果它只是为了满足学术问题的要求.
我想这有一些例外 - 如果静态方法可以证明只从一个类调用,并且该类是单例,那么该单例中可能有一个实例方法......但这几乎是一个极端情况.在你的情况下,create3Persons并且create2Persons都可以从包中的任何地方访问,并且它们不是单例中的实例方法,因此除了静态变量之外没有单个上下文来保持调用计数.
也许如果你能解释一下你想要实现的目标,我们可以帮助你更多......
编辑:是的,如果您可以依赖合作调用者 - 并且您可以更改方法签名 - 那么您可以保留(比方说)一个AtomicInteger,并确保始终将对同一对象的引用传递给createStudent方法.同样,我们真的需要知道问题的规则是什么......