카테고리 없음
20240807 개발공부
llmmhh
2024. 8. 7. 21:23
살짝 코드 리뷰같은 느낌으로 공부하면서 작성한 코드를 올린다.
while (true) {
System.out.println("과목코드를 입력하세요 필수3개이상 선택2개이상");
System.out.println("현재 상태 필수:"+require+"개 선택:"+choice+"개 선택되었습니다.");
subjectId = sc.nextInt();
sc.nextLine();
flag=true;
if(requireAndChoice.contains(subjectId)) {
//학생의 과목리스트에 존재하면(중복불가)
System.out.println("입력하신 코드는 이미존재합니다");
continue;
}
for (int i = 0; i < subjectInfoList.size(); i++) {
if (subjectInfoList.get(i)[0].equals(subjectId + "")) {
if (subjectInfoList.get(i)[2].equals("선택")) {
//입력받은코드와 같은 과목이 존재하면 그 과목의 타입이선택인지 필수인지확인함
//이 if문을 통과한다면 flag값이 false가된다.
//선택과목if문을 통과하면 choice값이 증가
requireAndChoice.add(subjectId);
flag=false;
choice++;
break;
}
if (subjectInfoList.get(i)[2].equals("필수")) {
//입력받은코드와 같은 과목이 존재하면 그 과목의 타입이선택인지 필수인지확인함
//이 if문을 통과한다면 flag값이 false가된다.
//필수과목if문을 통과하면 require값이 증가
requireAndChoice.add(subjectId);
flag=false;
require++;
break;
}
}
}
if(flag){
//만약 타입if문을 한번이라도 통과했다면 flag값이 false가 되어 동작하지않는다.
//하지만 한번도통과하지못했다면(입력받은 코드와 동일한 코드를 가진 과목이 없다면)
//존재하지않는코드라고 출력한후 while문 처음으로 돌아간다.
System.out.println("존재하지 않는코드입니다.");
continue;
}
if(requireAndChoice.size()>=subjectListMaxCount)
//9이상의 subjectList는담을수 없다 subjectList의 최대갯수는 9개
{
System.out.println("담을수 있는 모든 과목을 담으셨습니다. 욕심이 많으시군요.");
break;
}
if (require >= 3 && choice >= 2) {
//필수 3개이상과 선택2개이상을 담았다면 더담을때마다 그만담을지 물어본다.
System.out.println("필수과목3개이상과 선택과목2개이상을 선택하셨습니다. 그만담으시겠습니까? 0(Yes), 1(No)");
int yesOrNo = sc.nextInt();
sc.nextLine();
if (yesOrNo == 0)
break;
}
}
선택 과목, 필수 과목을 일정 수량만큼 받는법.
ArrayList<Integer> requireAndChoice = new ArrayList<>();
먼저 리스트를 쓰기 위에 while 문 위에 ArrayList를 만들고,
1. 과목의 정보 리스트(1번째 칸 인덱스로는 [0] // 과제 번호 값이 들어있음.)와 등록하는 과목의 숫자가 일치하는지. 확인
2. 과목의 정보 리스트(3번째 칸 인덱스로는 [2] // 선택,필수 값이 들어있음.)가 선택,필수 인지를 확인
3. 필수이면 require++ (위에 0으로 생성한 int 변수), 선택이면 choice++(위에 0으로 생성한 int 변수)
4. requireAndChoice.add() = 리스트에 ()안에 내용을 넣는법. subjectId 값을 넣어줌.
5. 등록된 sujectList (과제종류) 를 초과해서 등록하지 못하게 제한. requireAndChice.size() >= subjectListMaxCount 경우
6. 선택,필수 과목 필요한 만큼 선택했을 때, 더 등록할 것인지 확인
7. while 문으로 반복처리 하기 때문에 위에서 부터 시작.
8. 중복으로 입력한게 있는지 처리 필요. 리스트.contain() 으로 확인 = 리스트에 () 안에 넣은 값이 포함되어 있는지 확인
9. 이미 등록되어있다고 안내해주고 처음부터 입력하게 반복문 다시 진행으로 마무리.