오늘은 database의 중요성을 깨달았다...
아직 db를 배운 지 2일밖에 안돼서 테이블 생성하고 연결하는 방법 등 아는 게 거의 없어서
전에 배운 Stream을 이용해서 txt파일에 넣고 또다시 꺼내서 쓰고..(기능상 안 좋지만 지금은 어쩔 수 없어..)
그리고 어제 시스템상 오류가 있었는데,
경매장에 선수들을 처음에 100명넣고 영입하고, 방출하고 하려는 계획적인 측면에서
원하는 선수를 영입하려 했을 때, 선수를 선택하는 과정에서 1차 문제, 그 경매장에서 해당 선수만 빼오는 게 2차 문제,
그리고 경매장에서 선수를 영입했으면 경매장. txt에서 삭제시켜야 하는데 거기서 또 3차 문제... 그냥 문제 투성이
1차 문제 : 선수를 선택할 때 무슨 값으로 선택하냐
=> 이름으로 선택 시 : 중복되면 어떡하지?
=> 각 선수 앞에 count로 번호를 매기자 : 관리자 측면에서 선수를 다시 생성할 때 count 초기화... 번호가 이어서 안된다
2차 문제 :
=> 번호 오류를 고쳤다 치자. 그다음 그 선수 정보만 어떻게 빼오지?
3차 문제 :
=> 2차 문제만 해결하면 그 코드로 없애면 될 것 같긴 해..
[해결방안]
1차 문제 해결방안 :
일단 count 쓰는 건 빼자!
그리고 아직 이유를 발견 못했지만 각각의 선수들 숫자 옆에 ")"를 썼는데 split으로 ")"이 문자열 쪼개는 건 오류가 떴다 => 그래서 "/" 이걸로 변경! => 그리고 리스트에 사이즈라는 기능을 이용해서 선수별 번호를 매기자!
2차 문제 해결방안 :
ArrayList를 2개 만들어서
하나는 txt 파일을 다 넣는 곳 (while문 안에서 진행되기 때문에 인덱스가 계속 겹쳐서 배열에 들어간다)
clear 함수를 이용해서 중복되는 것을 제거하였고,
나머지 하나는 위에 배열에서 맨 마지막 인덱스만 다시 넣는 배열
이렇게 진행하면 두 번째 배열 안에는 텍스트에 있는 String 값들이 순서대로 들어간다
나머지는 사진에서 설명

count 했던 코드 삭제!!

위에서 언급했듯이, ")" -> "/"로 변경한 코드
그리고 count를 빼고 playerList라는 String 타입 ArrayList를 만들어서
경매장. txt를 불러올 때 line을 다 리스트에 넣어주었다
이렇게 하면 경매장이 자꾸 바뀌어도 총 line이 몇 줄인지
즉, 다음 선수를 추가시켰을 때 그 선수의 번호를 list의 사이즈로 넣으면 된다
(경매장에 맨 윗줄이 선수가 아니어서 +1 해줄 필요가 없다)
그리고 한 번에 2명씩 선수를 생성하니깐 밑에에는 사이즈보다 +1 해준다

(playerNum list는 필요 없음! 삭제 못했다.)
쉽게 말하면 lineNum은 중복되기 때문에 ln에다가 2차적으로 넣은 건데
다시 생각해보면 다른 방법도 있었다.
<두식이가 푼 코드> : save와 load 함수를 만들어서 저장되어있던 거를 불러와서 다시 load 시키는 방식


BaseballTeam 클래스는 한국야구팀을 만들고 txt 파일에 넣는 클래스이다
경매장 만드는 법과 많이 유사한데,
makeBaseballTeam 메서드는 관리자에게 팀이름을 입력받고
난이도는 랜덤으로 1~10까지 자동으로 설정하게 하고
return 값은 String 타입으로 지정하였다 (텍스트에 넣기 위해서)
add_BaseballTeam_list 메서드는
BufferedWriter 기능을 이용해서 야구팀 리스트. txt 파일에
makeBaseballTeam 메서드를 사용하여 만든 팀을 넣는 함수이다
그리고 pirnt_BaseballTeam_list 메서드는
말 그대로 넣어놓은 KBO 팀들을 콘솔 창에 출력해주는 메서드이다.

MyTeam 클래스에서는 경매장 클래스를 가져와서
구매하는 함수 purchasePlayer를 실행시킨다
그리고 purchasePlayer 함수 안에서는 Myteam 클래스를 가져가서 add_player 함수를 실행시키고
매개변수로 선택한 선수를 집어넣는다
그리고 out.write를 이용해서 매개변수로 들어온 선수를 우리 구단. txt에 넣는다

1번 오류 해결 한 console

선수를 영입했을 때, 우리구단.txt 파일에 원하는 선수가 들어간 사진
'Project > ToyProject' 카테고리의 다른 글
[Baseball - Restrict console] 4th (0) | 2021.08.01 |
---|---|
[Baseball - Restrict console] 3rd (0) | 2021.08.01 |
[Baseball - Restrict console] 1st (0) | 2021.08.01 |
[Baseball - Restrict console] plan (0) | 2021.08.01 |
[Rmanager] End (0) | 2021.07.31 |