如何计算java中不在主方法中的对象?

如何计算java中不在主方法中的对象?,java,Java,我试图计算我已经使用静态变量从另一个类创建的对象,我将它放在构造函数中,这样每次创建对象时它都会增长 我的问题是,当对象不在main中时,如何计数对象,然后在main方法中调用静态变量,以便显示值 你能告诉我我的代码有什么问题吗 public class MataKuliah { public static int JumlahMataKuliah = 0; private String kode, Nama; private int SKS; public MataKuliah(Stri

我试图计算我已经使用静态变量从另一个类创建的对象,我将它放在构造函数中,这样每次创建对象时它都会增长

我的问题是,当对象不在main中时,如何计数对象,然后在main方法中调用静态变量,以便显示值

你能告诉我我的代码有什么问题吗

public class MataKuliah {
public static int JumlahMataKuliah = 0;

private String kode, Nama;

private int SKS;

public MataKuliah(String kode, String Nama, int SKS) {
    this.kode = kode;
    this.Nama = Nama;
    this.SKS = SKS;
    JumlahMataKuliah++;

}
}

public class Ruang {
public static int JumlahRuang = 0;

private  String Nama, Gedung;
private int Kapasitas;

MataKuliah prolan = new MataKuliah("123GTW", "Pemrograman Lanjut", 5);  
MataKuliah sisdig = new MataKuliah("121FGH", "Sistem Digital", 3);
MataKuliah agama = new MataKuliah("009JSH", "Agama", 2);
MataKuliah bind = new MataKuliah("165BGS", "Bahasa Indonesia", 2);
MataKuliah database = new MataKuliah("887BVC", "Database", 4);



public Ruang(String Nama, String Gedung, int Kapasitas) {
    this.Nama = Nama;
    this.Gedung = Gedung;
    this.Kapasitas = Kapasitas;
    JumlahRuang++;


}
}

public class Mahasiswa {
public static int JumlahMahasiswa = 0;

private String Nama, NIM;


Ruang R1 = new Ruang("E2.1", "E", 40);
Ruang R2 = new Ruang("E2.2", "E", 35);
Ruang R3 = new Ruang("A1.5", "A", 38);
Ruang R4 = new Ruang("C2.0", "C", 40);

 public Mahasiswa(String Nama, String NIM) {
    this.Nama = Nama;
    this.NIM = NIM;
    JumlahMahasiswa++;

}

}

public class Test {

public static void main(String[] args) {
    Mahasiswa mhs1 = new Mahasiswa ("Paijo","627362362823");


    System.out.println("\n\njumlah matkul : "+MataKuliah.JumlahMataKuliah);
    System.out.println("jumlah ruang : "+Ruang.JumlahRuang);
    System.out.println("Jumlah Mahasiswa : "+Mahasiswa.JumlahMahasiswa);
}

}
它表明我的
JumlahMataKuliah
静态变量中有值20。
由于我只创建了5个对象,如何正确地计算它,使其仅显示5个对象?

每个Mahasiswa创建4个Ruang对象,然后创建5个MataKuliah,这意味着你的MataKuliah.JumlahMataKuliah是4x5=20。希望这有帮助

静态变量在所有实例之间共享,这意味着您可以说Class.variable从主方法访问变量

public class SomeClass{
    public static int instances = 0;
    public SomeClass(){
        this.instances++;
    }
}

public class TestClass(){
    public static void main(String[] args){
        Sysrem.out.println(SomeClass.instances);
    }
}
请注意,使用此方法意味着类的每个实例都将创建的类实例的数量计算为+1(因为它是构造函数调用),因此如果您使用另一个类创建一个类,那么如果创建的类超过1个,则instace count中会添加多个1


如评论中所述,之所以会出现此问题,是因为您在一个类中创建了另一个类的多个实例,并且希望两个实例的数量相同

您创建了1个
Mahasiswa
,它创建了4个
Ruang
。每个
Ruang
创建5个
MataKuliah
。1x4x5=20。