数组列表中具有不同类目标的多个约束要检查吗?

时间:2018-09-13 19:36:40

标签: java arraylist constraints

我一直在尝试使考试监考员分配程序受到限制。我一直遇到的问题是我无法检查列表中同时分配考试者的所有作业。至于下面的代码,我可以检查教师和他们的时间约束。总体而言,我正在为考试计划寻找4个限制条件。但是我只能用循环使两个。 还有一种我想创建的更好的方法吗?我试过数组,但有同样的问题。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import Nesneler.Atama;
import Nesneler.Gozetmen;
import Nesneler.GozetmenSuresi;
import Nesneler.Gun;
import Nesneler.Kisit1;
import Nesneler.Saat;
import Nesneler.Sinav;
import Nesneler.Zaman;

public class Dagitici {


List <Sinav> sinavlar = new ArrayList<Sinav> ();
List <Gun> gunler = new ArrayList<Gun> ();
List <Saat> saatler = new ArrayList<Saat> ();
List <Zaman> zamanlar = new ArrayList<Zaman> ();
List <Gozetmen> gozetmenler = new ArrayList<Gozetmen>();
List <Kisit1> kisitlar1 = new ArrayList<Kisit1> ();
List<Atama> atamalar = new ArrayList<Atama> ();
List<GozetmenSuresi> gs = new ArrayList<GozetmenSuresi> ();
public void kur() {


    gunler.add(new Gun("Pazartesi"));
    gunler.add(new Gun("Salı"));
    gunler.add(new Gun("Çarşamba"));
    gunler.add(new Gun("Perşembe"));
    gunler.add(new Gun("Cuma"));

    saatler.add(new Saat(10, 00));
    saatler.add(new Saat(11, 00));
    saatler.add(new Saat(12, 00));
    saatler.add(new Saat(13, 00));
    saatler.add(new Saat(14, 00));
    saatler.add(new Saat(15, 00));
    saatler.add(new Saat(16, 00));
    saatler.add(new Saat(17, 00));
    saatler.add(new Saat(18, 00));

    zamanlar.add(new Zaman(1));
    zamanlar.add(new Zaman(2));
    zamanlar.add(new Zaman(3));
    zamanlar.add(new Zaman(4));

    sinavlar.add(new Sinav("MAT 101",zamanlar.get(0),90,gunler.get(0),saatler.get(0)));
    sinavlar.add(new Sinav("EKON 101",zamanlar.get(1),90,gunler.get(0),saatler.get(3)));
    sinavlar.add(new Sinav("ENG 143",zamanlar.get(2),60,gunler.get(1),saatler.get(5)));
    sinavlar.add(new Sinav("TBY 101",zamanlar.get(3),60,gunler.get(1),saatler.get(7)));
    sinavlar.add(new Sinav("İŞLE 102",zamanlar.get(0),75,gunler.get(2),saatler.get(1)));
    sinavlar.add(new Sinav("BUST 104",zamanlar.get(2),90,gunler.get(2),saatler.get(5)));

    kisitlar1.add(new Kisit1(gunler.get(0),zamanlar.get(0)));   //0
    kisitlar1.add(new Kisit1(gunler.get(0),zamanlar.get(1)));   //1
    kisitlar1.add(new Kisit1(gunler.get(0), zamanlar.get(2)));  //2
    kisitlar1.add(new Kisit1(gunler.get(0),zamanlar.get(3)));   //3
    kisitlar1.add(new Kisit1(gunler.get(1),zamanlar.get(0)));   //4
    kisitlar1.add(new Kisit1(gunler.get(1),zamanlar.get(1)));   //5
    kisitlar1.add(new Kisit1(gunler.get(1), zamanlar.get(2)));  //6
    kisitlar1.add(new Kisit1(gunler.get(1),zamanlar.get(3)));   //7
    kisitlar1.add(new Kisit1(gunler.get(2),zamanlar.get(0)));   //8
    kisitlar1.add(new Kisit1(gunler.get(2),zamanlar.get(1)));   //9
    kisitlar1.add(new Kisit1(gunler.get(2), zamanlar.get(2)));  //10
    kisitlar1.add(new Kisit1(gunler.get(2),zamanlar.get(3)));   //11
    kisitlar1.add(new Kisit1(gunler.get(3),zamanlar.get(0)));   //12
    kisitlar1.add(new Kisit1(gunler.get(3),zamanlar.get(1)));   //13
    kisitlar1.add(new Kisit1(gunler.get(3), zamanlar.get(2)));  //14
    kisitlar1.add(new Kisit1(gunler.get(3),zamanlar.get(3)));   //15
    kisitlar1.add(new Kisit1(gunler.get(4),zamanlar.get(0)));   //16
    kisitlar1.add(new Kisit1(gunler.get(4),zamanlar.get(1)));   //17
    kisitlar1.add(new Kisit1(gunler.get(4), zamanlar.get(2)));  //18
    kisitlar1.add(new Kisit1(gunler.get(4),zamanlar.get(3)));   //19

    gozetmenler.add(new Gozetmen("Murat",kisitlar1.get(8)));
    gozetmenler.add(new Gozetmen("Can",kisitlar1.get(3)));



    }   

public void programYazdir() {


    for(int i=0; i<sinavlar.size();i++) {   
        System.out.println(sinavlar.get(i).getSinav() +" "  + sinavlar.get(i).getZaman().getZaman()+ " " + sinavlar.get(i).getSinavSuresi() + " " + sinavlar.get(i).getGun().getGun() + " " + sinavlar.get(i).getSaat().getH()+":"+ sinavlar.get(i).getSaat().getM());
                                }
    for(int i=0; i<atamalar.size() ;i++) {
        System.out.println("Gözetmen:  " + atamalar.get(i).getGozetmen().getGozetmen() + " \n Sınav: " + atamalar.get(i).getSinav().getSinav());
    }

    for(int i=0; i<gs.size(); i++) {
        System.out.println("Gözetmen: " + gs.get(i).getGozetmen().getGozetmen() + " \n Toplam Süresi: " + gs.get(i).getGozetmenSuresi());

    }



}




public void ata() {

    int goz = 0;
    int counter = 0; 

    for(int i=0; i < sinavlar.size();i++) {

    atamalar.add(new Atama(gozetmenler.get(goz), sinavlar.get(i))); 
    counter += sinavlar.get(i).getSinavSuresi();


    if(gozetmenler.get(goz).getKisit1().getGun().getGun().equals(sinavlar.get(i).getGun().getGun())) { // Kısıt1 Gün

        if(gozetmenler.get(goz).getKisit1().getZaman().equals(sinavlar.get(i).getZaman())) { // Kısıt1 Zaman

            gs.add(new GozetmenSuresi(gozetmenler.get(goz),counter));
            goz++;
            counter = 0;
        }

    }



}
    gs.add(new GozetmenSuresi(gozetmenler.get(goz),counter));
    counter=0;
}

public void dagit() {

kur();
Collections.shuffle(sinavlar);
ata();
programYazdir() ;

                    }


public static void main(String[]args) {

 Dagitici d = new Dagitici();
   d.dagit();

                                        }

 }

示例类

package Nesneler;

public class Sinav {

String sinav;
Gun gun;
Saat saat;
Zaman zaman;
int sinavSuresi;

public Sinav(String sinav,Zaman zaman,int sinavSuresi,Gun gun,Saat saat) {
    this.sinav=sinav;
    this.zaman=zaman;
    this.sinavSuresi=sinavSuresi;
    this.gun=gun;
    this.saat=saat;
}

public String getSinav() {
    return sinav;
}

public Gun getGun() {
    return gun;
}

public Saat getSaat() {
    return saat;
}

public Zaman getZaman() {
    return zaman;
}

public int getSinavSuresi() {
    return sinavSuresi;
}

@Override 

    public String toString() {

    return "Sınav: " + sinav + " Zaman: " + zaman.getZaman() + " Sınav süresi: " + sinavSuresi + " Gun: " + gun.getGun() + " Saat: " + saat.getH(); 
}

}

0 个答案:

没有答案