티스토리 뷰

심심해서 JAVA로 쓸모없는 프로그램을 짜보았습니다.

 

1번 프로그램은 반편성을할때 유용하게 쓰실수 있습니다.

 

우선 작동방법부터 보시겠습니다.

 

 

 

 

 

public class classroll_main {
 static int input;
 static int inputs;
 static int input_team;
 static int[] student; // 학생
 static int[] team; //모둠
 
 public static void main(String[] args){
  Scanner scanner = new Scanner(System.in); //Scanner 입력받는 인스턴스를 만들었다.
  System.out.println("학생의 수를 입력해주십시요");
  input = scanner.nextInt();
  System.out.println("조의 개수를 입력해주십시요");
  inputs = scanner.nextInt();
  System.out.println("한조에 최대수용가능한 인원을 입력해주십시요");
  input_team = scanner.nextInt();
  student = new int[++input]; // 입력받은만큼의 학생수로 student변수를 확장시키고,
  team = new int[++inputs]; // 입력받은 만큼의 조의 개수로 team 변수를 확장시킨다.
  for(int i=1;i < inputs;i++){
   team[i] = input_team; //입력받은 조에 수용가능 인원을 변수에 저장한다.
  }
  second();
 }
 
 
 static void second(){
  if (student.length > (inputs * input_team)){
   System.out.println("학생을 모두 넣을수 없습니다. 조편성을 다시해주십시요");
   System.exit(0);
  }else{
  
  for(int i=1;i < student.length;i++){
   roll(i); //학생의 번호를 넘겨주며, 조를 편성하는 roll메소드를 작동시킨다.
  }
  
  for(int i=1;i < team.length;i++){
   System.out.print(i+"조: ");
   for(int j=1; j < student.length;j++){
    if(student[j]==i){
     System.out.print(j+", ");
    }
   }
   System.out.println("");// 조를 출력하는 구문이다.
  }
  }
 }
 
 static void roll(int students){ //학생의 번호를 넘겨받는다.
  int check = (int) (Math.random() * (inputs-1) + 1); //(int)(Math.random()*최대값+시작값);
  System.out.println(students);
  System.out.println("조:"+check);
  if (team[check] > 0){ //만약 조의 인원이 꽉찼다면, 다시 돌린다.
   team[check]--; //조에 자리가 남았을시 조의 자리를 채우고,
   student[students]=check; //학생의 조를 확정시킨다.
  }else{
   roll(students); //이미 조에 자리가 찼을시 메소드를 다시 재귀호출 한다.
  }
  return;
 }
}

 

 

 


댓글
댓글쓰기 폼
Total
498,444
Today
26
Yesterday
452
링크
«   2020/10   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함