diff --git a/leets-mate-java-1 b/leets-mate-java-1 new file mode 160000 index 0000000..b0b5c25 --- /dev/null +++ b/leets-mate-java-1 @@ -0,0 +1 @@ +Subproject commit b0b5c25eb93b6577e7a6da1b2363b70e17a90714 diff --git a/src/main/java/leets/leets_mate/LeetsMateApplication.java b/src/main/java/leets/leets_mate/LeetsMateApplication.java index e48ce2b..1ac0f49 100644 --- a/src/main/java/leets/leets_mate/LeetsMateApplication.java +++ b/src/main/java/leets/leets_mate/LeetsMateApplication.java @@ -6,33 +6,87 @@ public class LeetsMateApplication { // 동작 함수입니다. public void run() { + Scanner scanner=new Scanner(System.in); + try{ + System.out.println("누구누구있어?"); + String leetsMember=scanner.nextLine(); + checkHasNoEnglish(leetsMember); + + List membersList=parseMembers((leetsMember)); + + System.out.println("몇명씩할래?"); + int groupNum=scanner.nextInt(); + checkDataValidity(membersList.size(),groupNum); + + List> leetsGroup=generateRandomGroups(membersList,groupNum); + + System.out.println("결과야."); + printResult(leetsGroup); + + while(true){ + System.out.println("마음에 안들어?(y/n)"); + String answer=scanner.next(); + if(answer.equalsIgnoreCase("y")){ + leetsGroup=generateRandomGroups(membersList,groupNum); + printResult(leetsGroup); + } + else if(answer.equalsIgnoreCase("n")){ + break; + } + } + }catch(IllegalArgumentException e){ + System.out.println("[ERROR]"+ e.getMessage()); + run(); + }finally{ + scanner.close(); + } } // 문자열로된 멤버들을 리스트로 분리하는 함수입니다. public List parseMembers(String members) { - return new ArrayList<>(); + List memberList=new ArrayList<>(); + String[] divide=members.split(","); + for(String member:divide){ + memberList.add(member); + } + return memberList; } // 총 멤버수를 반환합니다. public int memberNumber(List members) { - return 0; + return members.size(); } // 멤버 문자열에 영어가 있는지 검사합니다. 영어가 있다면 예외 출력 public void checkHasNoEnglish(String members) { + if(members.matches(".*[a-zA-Z].*")){ + throw new IllegalArgumentException("영어가 들어가면 안된다."); + } } // 멤버수와 최대 짝수 데이터가 유효한지 검사하는 함수입니다. 유효하지 않다면 예외 출력 public void checkDataValidity(int memberCount, int maximumGroupSize) { + if(memberCount<=0||maximumGroupSize<=0||maximumGroupSize>memberCount){ + throw new IllegalArgumentException(("멤버수와 최대짝수 데이터가 유효하지 않습니다.")); + } } // 랜덤 짝꿍 추첨하는 함수 입니다. public List> generateRandomGroups(List memberList, int maximumGroupSize) { - return new ArrayList<>(); + List afterMembers = new ArrayList<>(memberList); + Collections.shuffle(afterMembers); + List> groups = new ArrayList<>(); + for(int i=0;i> result) { + for(int i=0;i