From 50533b8e1a617100f8a9c45f4f036e1bbc967b48 Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Fri, 5 Jul 2019 20:39:47 +0900 Subject: [PATCH 01/26] =?UTF-8?q?Initial=20=ED=95=B4=EC=95=BC=ED=95=A0=20?= =?UTF-8?q?=EC=9D=BC=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b853592f59..d9340f7954 100644 --- a/README.md +++ b/README.md @@ -6,4 +6,16 @@ * 모든 피드백을 완료하면 다음 단계를 도전하고 앞의 과정을 반복한다. ## 온라인 코드 리뷰 과정 -* [텍스트와 이미지로 살펴보는 온라인 코드 리뷰 과정](https://github.com/nextstep-step/nextstep-docs/tree/master/codereview) \ No newline at end of file +* [텍스트와 이미지로 살펴보는 온라인 코드 리뷰 과정](https://github.com/nextstep-step/nextstep-docs/tree/master/codereview) + +## 클래스 구조 및 테스트 케이스 작성 +* Person + * 플레이어 이름이 5글자 넘을때 예외처리 +* Line + * 라인이 겹치는 경우 + * 라인이 안겹치는 경우 +* Ladder + * 사다리 한줄 생성 + * InputView + * ResultView + * ConsoleMain \ No newline at end of file From c2427fc6ec706cafa969e0554ed095801aa14a3f Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Fri, 5 Jul 2019 20:48:47 +0900 Subject: [PATCH 02/26] =?UTF-8?q?Add=20=ED=94=84=EB=A1=9C=EC=A0=9D?= =?UTF-8?q?=ED=8A=B8=20=EA=B5=AC=EC=A1=B0=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main/java/nextstep/main/ConsoleMain.java | 7 +++++++ .../java/nextstep/main/view/InputView.java | 18 ++++++++++++++++++ .../java/nextstep/main/view/ResultView.java | 7 +++++++ src/main/java/nextstep/main/vo/Ladder.java | 4 ++++ src/main/java/nextstep/main/vo/Line.java | 4 ++++ src/main/java/nextstep/main/vo/Persons.java | 4 ++++ 7 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 src/main/java/nextstep/main/ConsoleMain.java create mode 100644 src/main/java/nextstep/main/view/InputView.java create mode 100644 src/main/java/nextstep/main/view/ResultView.java create mode 100644 src/main/java/nextstep/main/vo/Ladder.java create mode 100644 src/main/java/nextstep/main/vo/Line.java create mode 100644 src/main/java/nextstep/main/vo/Persons.java diff --git a/README.md b/README.md index d9340f7954..556a559c95 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ * [텍스트와 이미지로 살펴보는 온라인 코드 리뷰 과정](https://github.com/nextstep-step/nextstep-docs/tree/master/codereview) ## 클래스 구조 및 테스트 케이스 작성 -* Person +* Persons * 플레이어 이름이 5글자 넘을때 예외처리 * Line * 라인이 겹치는 경우 diff --git a/src/main/java/nextstep/main/ConsoleMain.java b/src/main/java/nextstep/main/ConsoleMain.java new file mode 100644 index 0000000000..afcbb1fba8 --- /dev/null +++ b/src/main/java/nextstep/main/ConsoleMain.java @@ -0,0 +1,7 @@ +package nextstep.main; + +public class ConsoleMain { + public static void main(String []args){ + + } +} diff --git a/src/main/java/nextstep/main/view/InputView.java b/src/main/java/nextstep/main/view/InputView.java new file mode 100644 index 0000000000..756a3e8b5c --- /dev/null +++ b/src/main/java/nextstep/main/view/InputView.java @@ -0,0 +1,18 @@ +package nextstep.main.view; + +import java.util.Scanner; + +public class InputView { + public String playerNames(){ + System.out.println("참여할 사람 이름을 입력하세요. (이름은 쉼표(,)로 구분하세요)"); + Scanner scanner = new Scanner(System.in); + return scanner.nextLine(); + } + + public int maxLadderHeight(){ + System.out.println("최대 사다리 높이는 몇 개인가요?"); + Scanner scanner = new Scanner(System.in); + return scanner.nextInt(); + } + +} diff --git a/src/main/java/nextstep/main/view/ResultView.java b/src/main/java/nextstep/main/view/ResultView.java new file mode 100644 index 0000000000..e4ffa7c4bf --- /dev/null +++ b/src/main/java/nextstep/main/view/ResultView.java @@ -0,0 +1,7 @@ +package nextstep.main.view; + +public class ResultView { + public void execute(){ + System.out.println("실행결과"); + } +} diff --git a/src/main/java/nextstep/main/vo/Ladder.java b/src/main/java/nextstep/main/vo/Ladder.java new file mode 100644 index 0000000000..b2329e09d5 --- /dev/null +++ b/src/main/java/nextstep/main/vo/Ladder.java @@ -0,0 +1,4 @@ +package nextstep.main.vo; + +public class Ladder { +} diff --git a/src/main/java/nextstep/main/vo/Line.java b/src/main/java/nextstep/main/vo/Line.java new file mode 100644 index 0000000000..d7493fa8fc --- /dev/null +++ b/src/main/java/nextstep/main/vo/Line.java @@ -0,0 +1,4 @@ +package nextstep.main.vo; + +public class Line { +} diff --git a/src/main/java/nextstep/main/vo/Persons.java b/src/main/java/nextstep/main/vo/Persons.java new file mode 100644 index 0000000000..25f9c6c0fc --- /dev/null +++ b/src/main/java/nextstep/main/vo/Persons.java @@ -0,0 +1,4 @@ +package nextstep.main.vo; + +public class Persons { +} From 3eabb9e583de720085085c14d51e7e1b9fe65f31 Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Fri, 5 Jul 2019 21:09:51 +0900 Subject: [PATCH 03/26] =?UTF-8?q?Test=20=ED=94=8C=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=5F=EC=9D=B4=EB=A6=84=EC=9D=B4=5F5=EA=B8=80=EC=9E=90?= =?UTF-8?q?=5F=EB=84=98=EB=8A=94=5F=EA=B2=BD=EC=9A=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 1 + gradle/wrapper/gradle-wrapper.properties | 3 ++- src/main/java/nextstep/main/vo/Persons.java | 13 +++++++++++++ src/test/java/nextstep/main/vo/PersonsTest.java | 10 ++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 src/test/java/nextstep/main/vo/PersonsTest.java diff --git a/build.gradle b/build.gradle index 1b85b74cb3..4b838d9d7a 100644 --- a/build.gradle +++ b/build.gradle @@ -11,4 +11,5 @@ repositories { dependencies { testCompile('org.junit.jupiter:junit-jupiter:5.4.2') testCompile('org.assertj:assertj-core:3.11.1') + testCompile('junit:junit:4.12') } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 290541c738..971c14247f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Fri Jul 05 20:59:43 KST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip diff --git a/src/main/java/nextstep/main/vo/Persons.java b/src/main/java/nextstep/main/vo/Persons.java index 25f9c6c0fc..e90957135b 100644 --- a/src/main/java/nextstep/main/vo/Persons.java +++ b/src/main/java/nextstep/main/vo/Persons.java @@ -1,4 +1,17 @@ package nextstep.main.vo; +import java.util.Arrays; +import java.util.List; + public class Persons { + public static final int MAX_NAME_COUNT = 5; + List perons; + + public Persons(String... names) { + for (String name : names) { + if (name.length() > MAX_NAME_COUNT) + throw new IllegalArgumentException(); + } + perons = Arrays.asList(names); + } } diff --git a/src/test/java/nextstep/main/vo/PersonsTest.java b/src/test/java/nextstep/main/vo/PersonsTest.java new file mode 100644 index 0000000000..2320f51495 --- /dev/null +++ b/src/test/java/nextstep/main/vo/PersonsTest.java @@ -0,0 +1,10 @@ +package nextstep.main.vo; + +import org.junit.Test; + +public class PersonsTest { + @Test(expected = IllegalArgumentException.class) + public void 플레이어_이름이_5글자_넘는_경우() { + Persons persons = new Persons("moon, moonhye"); + } +} \ No newline at end of file From acd2e92cd85b710d855be3fcfe34cc85bc52e43c Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Fri, 5 Jul 2019 21:48:02 +0900 Subject: [PATCH 04/26] =?UTF-8?q?Test=20=EB=9D=BC=EC=9D=B8=EA=B2=B9?= =?UTF-8?q?=EC=B9=98=EB=8A=94=20=EA=B2=BD=EC=9A=B0=EC=99=80=20=EC=95=88=20?= =?UTF-8?q?=EA=B2=B9=EC=B9=98=EB=8A=94=20=EA=B2=BD=EC=9A=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/main/vo/Line.java | 3 +++ src/test/java/nextstep/main/vo/LineTest.java | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 src/test/java/nextstep/main/vo/LineTest.java diff --git a/src/main/java/nextstep/main/vo/Line.java b/src/main/java/nextstep/main/vo/Line.java index d7493fa8fc..b1ac59fe11 100644 --- a/src/main/java/nextstep/main/vo/Line.java +++ b/src/main/java/nextstep/main/vo/Line.java @@ -1,4 +1,7 @@ package nextstep.main.vo; public class Line { + static boolean isEqual(boolean prevPoint, boolean newPoint) { + return prevPoint == newPoint; + } } diff --git a/src/test/java/nextstep/main/vo/LineTest.java b/src/test/java/nextstep/main/vo/LineTest.java new file mode 100644 index 0000000000..ef394103b2 --- /dev/null +++ b/src/test/java/nextstep/main/vo/LineTest.java @@ -0,0 +1,19 @@ +package nextstep.main.vo; + +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class LineTest { + @Test + public void 라인이_겹치는_경우() { + boolean result = Line.isEqual(true, true); + assertThat(result).isEqualTo(true); + } + + @Test + public void 라인이_안겹치는_경우() { + boolean result = Line.isEqual(true, false); + assertThat(result).isEqualTo(false); + } +} \ No newline at end of file From 5a1f9c9dd0a265624dc0c303934655f2f61c7340 Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Sat, 6 Jul 2019 06:55:43 +0900 Subject: [PATCH 05/26] =?UTF-8?q?Test=20=EC=82=AC=EB=8B=A4=EB=A6=AC=20?= =?UTF-8?q?=ED=95=9C=EC=A4=84=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/main/vo/Ladder.java | 17 ++++++++ src/main/java/nextstep/main/vo/Line.java | 43 +++++++++++++++++++ .../java/nextstep/main/vo/LadderTest.java | 19 ++++++++ src/test/java/nextstep/main/vo/LineTest.java | 6 +++ .../java/nextstep/main/vo/PersonsTest.java | 3 +- 5 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 src/test/java/nextstep/main/vo/LadderTest.java diff --git a/src/main/java/nextstep/main/vo/Ladder.java b/src/main/java/nextstep/main/vo/Ladder.java index b2329e09d5..ddeb2dcd03 100644 --- a/src/main/java/nextstep/main/vo/Ladder.java +++ b/src/main/java/nextstep/main/vo/Ladder.java @@ -1,4 +1,21 @@ package nextstep.main.vo; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.IntStream; + public class Ladder { + private List lines; + + public Ladder() { + this.lines = new ArrayList<>(); + } + + public int generateLadder(int ladderHeight, int playerCount) { + IntStream.range(0, ladderHeight) + .mapToObj(item -> new Line(playerCount)) + .forEach(line -> this.lines.add(line)); + + return this.lines.size(); + } } diff --git a/src/main/java/nextstep/main/vo/Line.java b/src/main/java/nextstep/main/vo/Line.java index b1ac59fe11..78bd53163e 100644 --- a/src/main/java/nextstep/main/vo/Line.java +++ b/src/main/java/nextstep/main/vo/Line.java @@ -1,6 +1,49 @@ package nextstep.main.vo; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.stream.IntStream; + public class Line { + private static final int START_POINT = 0; + + private List points; + + Line(int countOfPerson) { + generateLine(countOfPerson); + } + + private int generateLine(int countOfPerson) { + points = new ArrayList<>(); + + IntStream.range(0, numberOfPoints(countOfPerson)) + .forEach(i -> points.add(generateCurrentPoint(i))); + + return points.size(); + } + + private static int numberOfPoints(int countOfPerson) { + return countOfPerson - 1; + } + + private boolean generateCurrentPoint(int newPosition) { + boolean point = new Random().nextBoolean(); + + if (isOverLapped(newPosition, point)) { + point = !point; + } + + return point; + } + + private boolean isOverLapped(int currPosition, boolean newPoint) { + if (currPosition == START_POINT) + return false; + + return isEqual(points.get(currPosition - 1), newPoint); + } + static boolean isEqual(boolean prevPoint, boolean newPoint) { return prevPoint == newPoint; } diff --git a/src/test/java/nextstep/main/vo/LadderTest.java b/src/test/java/nextstep/main/vo/LadderTest.java new file mode 100644 index 0000000000..b2d29f09df --- /dev/null +++ b/src/test/java/nextstep/main/vo/LadderTest.java @@ -0,0 +1,19 @@ +package nextstep.main.vo; + +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class LadderTest { + @Test + public void 사다리_한줄_생성() { + //given + Ladder ladder = new Ladder(); + + //when + int result = ladder.generateLadder(1, 4); + + //then + assertThat(result).isEqualTo(1); + } +} \ No newline at end of file diff --git a/src/test/java/nextstep/main/vo/LineTest.java b/src/test/java/nextstep/main/vo/LineTest.java index ef394103b2..625bd6d401 100644 --- a/src/test/java/nextstep/main/vo/LineTest.java +++ b/src/test/java/nextstep/main/vo/LineTest.java @@ -7,13 +7,19 @@ public class LineTest { @Test public void 라인이_겹치는_경우() { + //given, when boolean result = Line.isEqual(true, true); + + //then assertThat(result).isEqualTo(true); } @Test public void 라인이_안겹치는_경우() { + //given, when boolean result = Line.isEqual(true, false); + + //then assertThat(result).isEqualTo(false); } } \ No newline at end of file diff --git a/src/test/java/nextstep/main/vo/PersonsTest.java b/src/test/java/nextstep/main/vo/PersonsTest.java index 2320f51495..69c7e5e6a2 100644 --- a/src/test/java/nextstep/main/vo/PersonsTest.java +++ b/src/test/java/nextstep/main/vo/PersonsTest.java @@ -5,6 +5,7 @@ public class PersonsTest { @Test(expected = IllegalArgumentException.class) public void 플레이어_이름이_5글자_넘는_경우() { - Persons persons = new Persons("moon, moonhye"); + //given + new Persons("moon, moonhye"); } } \ No newline at end of file From b0eef9b5a61d4249229b0468c21879615e095998 Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Sat, 6 Jul 2019 07:13:43 +0900 Subject: [PATCH 06/26] =?UTF-8?q?Test=20=EB=AC=B8=EC=9E=90=EC=97=B4?= =?UTF-8?q?=EC=9D=84=5F=EC=89=BD=ED=91=9C=EB=A1=9C=5F=EA=B5=AC=EB=B6=84?= =?UTF-8?q?=ED=95=A0=EB=95=8C=5F=EC=82=AC=EB=9E=8C=5F=EB=AA=85=EC=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ src/main/java/nextstep/main/vo/Person.java | 14 ++++++++ src/main/java/nextstep/main/vo/Persons.java | 33 ++++++++++++++----- .../java/nextstep/main/vo/PersonTest.java | 12 +++++++ .../java/nextstep/main/vo/PersonsTest.java | 14 ++++++-- 5 files changed, 63 insertions(+), 12 deletions(-) create mode 100644 src/main/java/nextstep/main/vo/Person.java create mode 100644 src/test/java/nextstep/main/vo/PersonTest.java diff --git a/README.md b/README.md index 556a559c95..dfbd531cd5 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ ## 클래스 구조 및 테스트 케이스 작성 * Persons + * 문자열을 잘 나눴는지 +* Person * 플레이어 이름이 5글자 넘을때 예외처리 * Line * 라인이 겹치는 경우 diff --git a/src/main/java/nextstep/main/vo/Person.java b/src/main/java/nextstep/main/vo/Person.java new file mode 100644 index 0000000000..5da1009242 --- /dev/null +++ b/src/main/java/nextstep/main/vo/Person.java @@ -0,0 +1,14 @@ +package nextstep.main.vo; + +public class Person { + private static final int MAX_NAME_COUNT = 5; + + private String name; + + public Person(String name) { + if (name.length() > MAX_NAME_COUNT) + throw new IllegalArgumentException(); + + this.name = name; + } +} diff --git a/src/main/java/nextstep/main/vo/Persons.java b/src/main/java/nextstep/main/vo/Persons.java index e90957135b..3eedca9929 100644 --- a/src/main/java/nextstep/main/vo/Persons.java +++ b/src/main/java/nextstep/main/vo/Persons.java @@ -1,17 +1,32 @@ package nextstep.main.vo; import java.util.Arrays; +import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; public class Persons { - public static final int MAX_NAME_COUNT = 5; - List perons; - - public Persons(String... names) { - for (String name : names) { - if (name.length() > MAX_NAME_COUNT) - throw new IllegalArgumentException(); - } - perons = Arrays.asList(names); + private static final String NAME_SEPARATOR = ","; + + private List persons; + + public Persons(List players) { + this.persons = Collections.unmodifiableList(players); + } + + public static Persons generate(String names) { + List persons = Arrays.stream(split(names)) + .map(Person::new) + .collect(Collectors.toList()); + + return new Persons(persons); + } + + private static String[] split(String value) { + return value.split(NAME_SEPARATOR); + } + + public int getPersons() { + return this.persons.size(); } } diff --git a/src/test/java/nextstep/main/vo/PersonTest.java b/src/test/java/nextstep/main/vo/PersonTest.java new file mode 100644 index 0000000000..8f4dea183d --- /dev/null +++ b/src/test/java/nextstep/main/vo/PersonTest.java @@ -0,0 +1,12 @@ +package nextstep.main.vo; + + +import org.junit.Test; + +public class PersonTest { + @Test(expected = IllegalArgumentException.class) + public void 플레이어_이름이_5글자_넘는_경우() { + //given + new Person("moonhye"); + } +} \ No newline at end of file diff --git a/src/test/java/nextstep/main/vo/PersonsTest.java b/src/test/java/nextstep/main/vo/PersonsTest.java index 69c7e5e6a2..741262f9bd 100644 --- a/src/test/java/nextstep/main/vo/PersonsTest.java +++ b/src/test/java/nextstep/main/vo/PersonsTest.java @@ -2,10 +2,18 @@ import org.junit.Test; +import static org.assertj.core.api.Assertions.assertThat; + public class PersonsTest { - @Test(expected = IllegalArgumentException.class) - public void 플레이어_이름이_5글자_넘는_경우() { + @Test + public void 문자열을_쉽표로_구분할때_사람_명수() { //given - new Persons("moon, moonhye"); + String names = "문혜영, 문혜영2"; + + //when + Persons result = Persons.generate(names); + + //then + assertThat(result.getPersons()).isEqualTo(2); } } \ No newline at end of file From 62c9f545e059d43f456e8a203bb0f131b71ce449 Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Sat, 6 Jul 2019 07:26:19 +0900 Subject: [PATCH 07/26] =?UTF-8?q?=EC=82=AC=EB=8B=A4=EB=A6=AC=20=EC=9D=B8?= =?UTF-8?q?=EC=9B=90=20=EC=B6=9C=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/main/ConsoleMain.java | 13 +++++++++++++ src/main/java/nextstep/main/view/InputView.java | 4 ++-- src/main/java/nextstep/main/view/ResultView.java | 9 ++++++++- src/main/java/nextstep/main/vo/Person.java | 12 ++++++++++++ src/main/java/nextstep/main/vo/Persons.java | 6 +++++- src/test/java/nextstep/main/vo/PersonsTest.java | 2 +- 6 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/main/java/nextstep/main/ConsoleMain.java b/src/main/java/nextstep/main/ConsoleMain.java index afcbb1fba8..444951469b 100644 --- a/src/main/java/nextstep/main/ConsoleMain.java +++ b/src/main/java/nextstep/main/ConsoleMain.java @@ -1,7 +1,20 @@ package nextstep.main; +import nextstep.main.view.InputView; +import nextstep.main.view.ResultView; +import nextstep.main.vo.Ladder; +import nextstep.main.vo.Persons; + public class ConsoleMain { public static void main(String []args){ + String playersName = InputView.playerNames(); + int ladderHeight = InputView.maxLadderHeight(); + + Persons persons = Persons.generate(playersName); + + Ladder ladder = new Ladder(); + ladder.generateLadder(ladderHeight, persons.getPersonCount()); + ResultView.executeNames(persons); } } diff --git a/src/main/java/nextstep/main/view/InputView.java b/src/main/java/nextstep/main/view/InputView.java index 756a3e8b5c..c013ecaa68 100644 --- a/src/main/java/nextstep/main/view/InputView.java +++ b/src/main/java/nextstep/main/view/InputView.java @@ -3,13 +3,13 @@ import java.util.Scanner; public class InputView { - public String playerNames(){ + public static String playerNames() { System.out.println("참여할 사람 이름을 입력하세요. (이름은 쉼표(,)로 구분하세요)"); Scanner scanner = new Scanner(System.in); return scanner.nextLine(); } - public int maxLadderHeight(){ + public static int maxLadderHeight() { System.out.println("최대 사다리 높이는 몇 개인가요?"); Scanner scanner = new Scanner(System.in); return scanner.nextInt(); diff --git a/src/main/java/nextstep/main/view/ResultView.java b/src/main/java/nextstep/main/view/ResultView.java index e4ffa7c4bf..8508060816 100644 --- a/src/main/java/nextstep/main/view/ResultView.java +++ b/src/main/java/nextstep/main/view/ResultView.java @@ -1,7 +1,14 @@ package nextstep.main.view; +import nextstep.main.vo.Persons; + public class ResultView { - public void execute(){ + public static void executeNames(Persons persons){ System.out.println("실행결과"); + + persons.getPersons() + .forEach(System.out::print); + + System.out.println(); } } diff --git a/src/main/java/nextstep/main/vo/Person.java b/src/main/java/nextstep/main/vo/Person.java index 5da1009242..2bc789fac6 100644 --- a/src/main/java/nextstep/main/vo/Person.java +++ b/src/main/java/nextstep/main/vo/Person.java @@ -1,5 +1,8 @@ package nextstep.main.vo; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + public class Person { private static final int MAX_NAME_COUNT = 5; @@ -11,4 +14,13 @@ public Person(String name) { this.name = name; } + + @Override + public String toString() { + String str = IntStream.range(0, MAX_NAME_COUNT - this.name.length()) + .mapToObj(i -> " ") + .collect(Collectors.joining("", this.name, " ")); + + return str; + } } diff --git a/src/main/java/nextstep/main/vo/Persons.java b/src/main/java/nextstep/main/vo/Persons.java index 3eedca9929..3a8063d7d9 100644 --- a/src/main/java/nextstep/main/vo/Persons.java +++ b/src/main/java/nextstep/main/vo/Persons.java @@ -26,7 +26,11 @@ private static String[] split(String value) { return value.split(NAME_SEPARATOR); } - public int getPersons() { + public int getPersonCount() { return this.persons.size(); } + + public List getPersons() { + return this.persons; + } } diff --git a/src/test/java/nextstep/main/vo/PersonsTest.java b/src/test/java/nextstep/main/vo/PersonsTest.java index 741262f9bd..793bf2a037 100644 --- a/src/test/java/nextstep/main/vo/PersonsTest.java +++ b/src/test/java/nextstep/main/vo/PersonsTest.java @@ -14,6 +14,6 @@ public class PersonsTest { Persons result = Persons.generate(names); //then - assertThat(result.getPersons()).isEqualTo(2); + assertThat(result.getPersonCount()).isEqualTo(2); } } \ No newline at end of file From ed1f7b4b46cb55a6038d020db1dbfc7086ccacf1 Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Sat, 6 Jul 2019 07:31:39 +0900 Subject: [PATCH 08/26] =?UTF-8?q?Add=20=EC=82=AC=EB=8B=A4=EB=A6=AC=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/main/ConsoleMain.java | 1 + src/main/java/nextstep/main/view/ResultView.java | 6 ++++++ src/main/java/nextstep/main/vo/Ladder.java | 4 ++++ src/main/java/nextstep/main/vo/Line.java | 16 ++++++++++++++++ 4 files changed, 27 insertions(+) diff --git a/src/main/java/nextstep/main/ConsoleMain.java b/src/main/java/nextstep/main/ConsoleMain.java index 444951469b..2c2df982fe 100644 --- a/src/main/java/nextstep/main/ConsoleMain.java +++ b/src/main/java/nextstep/main/ConsoleMain.java @@ -16,5 +16,6 @@ public static void main(String []args){ ladder.generateLadder(ladderHeight, persons.getPersonCount()); ResultView.executeNames(persons); + ResultView.drawLadder(ladder); } } diff --git a/src/main/java/nextstep/main/view/ResultView.java b/src/main/java/nextstep/main/view/ResultView.java index 8508060816..c04cd53fdb 100644 --- a/src/main/java/nextstep/main/view/ResultView.java +++ b/src/main/java/nextstep/main/view/ResultView.java @@ -1,5 +1,6 @@ package nextstep.main.view; +import nextstep.main.vo.Ladder; import nextstep.main.vo.Persons; public class ResultView { @@ -11,4 +12,9 @@ public static void executeNames(Persons persons){ System.out.println(); } + + public static void drawLadder(Ladder ladder) { + ladder.getLines() + .forEach(System.out::println); + } } diff --git a/src/main/java/nextstep/main/vo/Ladder.java b/src/main/java/nextstep/main/vo/Ladder.java index ddeb2dcd03..94192a8ce8 100644 --- a/src/main/java/nextstep/main/vo/Ladder.java +++ b/src/main/java/nextstep/main/vo/Ladder.java @@ -18,4 +18,8 @@ public int generateLadder(int ladderHeight, int playerCount) { return this.lines.size(); } + + public List getLines() { + return this.lines; + } } diff --git a/src/main/java/nextstep/main/vo/Line.java b/src/main/java/nextstep/main/vo/Line.java index 78bd53163e..ad9fe004c0 100644 --- a/src/main/java/nextstep/main/vo/Line.java +++ b/src/main/java/nextstep/main/vo/Line.java @@ -47,4 +47,20 @@ private boolean isOverLapped(int currPosition, boolean newPoint) { static boolean isEqual(boolean prevPoint, boolean newPoint) { return prevPoint == newPoint; } + + @Override + public String toString() { + final StringBuilder str = new StringBuilder(" |"); + points.forEach(b -> str.append(pointToString(b))); + + return str.toString(); + } + + private String pointToString(boolean b) { + if(b) { + return "-----|"; + } + + return " |"; + } } From 0b54be4da04703abfedc34071490ea2730f1bc33 Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Sat, 3 Aug 2019 07:59:47 +0900 Subject: [PATCH 09/26] =?UTF-8?q?Refactor=20StringUtils=ED=95=A8=EC=88=98?= =?UTF-8?q?=EC=82=AC=EC=9A=A9,=20=EA=B3=B5=EB=B0=B1=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 1 + src/main/java/nextstep/main/vo/Line.java | 13 +++++++++---- src/main/java/nextstep/main/vo/Person.java | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 4b838d9d7a..c696411505 100644 --- a/build.gradle +++ b/build.gradle @@ -12,4 +12,5 @@ dependencies { testCompile('org.junit.jupiter:junit-jupiter:5.4.2') testCompile('org.assertj:assertj-core:3.11.1') testCompile('junit:junit:4.12') + compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.0' } \ No newline at end of file diff --git a/src/main/java/nextstep/main/vo/Line.java b/src/main/java/nextstep/main/vo/Line.java index ad9fe004c0..b1f06a09db 100644 --- a/src/main/java/nextstep/main/vo/Line.java +++ b/src/main/java/nextstep/main/vo/Line.java @@ -1,5 +1,7 @@ package nextstep.main.vo; +import org.apache.commons.lang3.StringUtils; + import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -7,6 +9,10 @@ public class Line { private static final int START_POINT = 0; + public static final String VERTICAL = "|"; + public static final int HORIZONTAL_SIZE = 5; + public static final String DASH = "-"; + public static final String EMPTY = " "; private List points; @@ -50,7 +56,7 @@ static boolean isEqual(boolean prevPoint, boolean newPoint) { @Override public String toString() { - final StringBuilder str = new StringBuilder(" |"); + final StringBuilder str = new StringBuilder(" |"); points.forEach(b -> str.append(pointToString(b))); return str.toString(); @@ -58,9 +64,8 @@ public String toString() { private String pointToString(boolean b) { if(b) { - return "-----|"; + return StringUtils.leftPad(VERTICAL, HORIZONTAL_SIZE, DASH); } - - return " |"; + return StringUtils.leftPad(VERTICAL, HORIZONTAL_SIZE, EMPTY); } } diff --git a/src/main/java/nextstep/main/vo/Person.java b/src/main/java/nextstep/main/vo/Person.java index 2bc789fac6..724d014d0f 100644 --- a/src/main/java/nextstep/main/vo/Person.java +++ b/src/main/java/nextstep/main/vo/Person.java @@ -18,7 +18,7 @@ public Person(String name) { @Override public String toString() { String str = IntStream.range(0, MAX_NAME_COUNT - this.name.length()) - .mapToObj(i -> " ") + .mapToObj(i -> " ") .collect(Collectors.joining("", this.name, " ")); return str; From a92006646ebc7a9ea5aa160dac9ff95386a8190a Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Sat, 3 Aug 2019 08:45:10 +0900 Subject: [PATCH 10/26] =?UTF-8?q?Add=20=20=EC=9E=85=EB=A0=A5=ED=95=98?= =?UTF-8?q?=EB=8A=94=EA=B2=83=20=EA=B2=B0=EA=B3=BC=20=ED=85=8D=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/main/view/InputView.java | 6 ++++++ src/main/java/nextstep/main/view/ResultView.java | 10 +++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/nextstep/main/view/InputView.java b/src/main/java/nextstep/main/view/InputView.java index c013ecaa68..123d3a45ba 100644 --- a/src/main/java/nextstep/main/view/InputView.java +++ b/src/main/java/nextstep/main/view/InputView.java @@ -9,6 +9,12 @@ public static String playerNames() { return scanner.nextLine(); } + public static String ladderResultPreDiction(){ + System.out.println("실행 결과를 입력하세요. (결과는 쉼표(,)로 구분하세요)"); + Scanner scanner = new Scanner(System.in); + return scanner.nextLine(); + } + public static int maxLadderHeight() { System.out.println("최대 사다리 높이는 몇 개인가요?"); Scanner scanner = new Scanner(System.in); diff --git a/src/main/java/nextstep/main/view/ResultView.java b/src/main/java/nextstep/main/view/ResultView.java index c04cd53fdb..f2eddd6e9e 100644 --- a/src/main/java/nextstep/main/view/ResultView.java +++ b/src/main/java/nextstep/main/view/ResultView.java @@ -5,7 +5,7 @@ public class ResultView { public static void executeNames(Persons persons){ - System.out.println("실행결과"); + System.out.println("사다리 결과"); persons.getPersons() .forEach(System.out::print); @@ -17,4 +17,12 @@ public static void drawLadder(Ladder ladder) { ladder.getLines() .forEach(System.out::println); } + + public static void resultWhoWin(){ + System.out.println("결과를 보고 싶은 사람은?"); + } + + public static void textResultAll(){ + System.out.println("실행 결과"); + } } From 6092c5187a1ab7cb607755b8860f54373715f93e Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Sat, 3 Aug 2019 09:55:23 +0900 Subject: [PATCH 11/26] =?UTF-8?q?Update=20=EB=8B=B9=EC=B2=A8=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 ++++-- src/main/java/nextstep/main/ConsoleMain.java | 4 ++++ src/main/java/nextstep/main/view/ResultView.java | 6 ++++++ src/main/java/nextstep/main/vo/Persons.java | 1 - 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index dfbd531cd5..e87b3c269f 100644 --- a/README.md +++ b/README.md @@ -11,13 +11,15 @@ ## 클래스 구조 및 테스트 케이스 작성 * Persons * 문자열을 잘 나눴는지 + * 꽝, 당첨 내역 확인 * Person * 플레이어 이름이 5글자 넘을때 예외처리 * Line * 라인이 겹치는 경우 * 라인이 안겹치는 경우 * Ladder - * 사다리 한줄 생성 + * 사다리 한줄 생성 * InputView * ResultView - * ConsoleMain \ No newline at end of file + * ConsoleMain + * 최종결과 확인해서 라인별로 반복한 값을 리턴시킴 \ No newline at end of file diff --git a/src/main/java/nextstep/main/ConsoleMain.java b/src/main/java/nextstep/main/ConsoleMain.java index 2c2df982fe..1cf40cd570 100644 --- a/src/main/java/nextstep/main/ConsoleMain.java +++ b/src/main/java/nextstep/main/ConsoleMain.java @@ -8,14 +8,18 @@ public class ConsoleMain { public static void main(String []args){ String playersName = InputView.playerNames(); + String playerResults = InputView.ladderResultPreDiction(); + int ladderHeight = InputView.maxLadderHeight(); Persons persons = Persons.generate(playersName); + Persons results = Persons.generate(playerResults); Ladder ladder = new Ladder(); ladder.generateLadder(ladderHeight, persons.getPersonCount()); ResultView.executeNames(persons); ResultView.drawLadder(ladder); + ResultView.executeResults(results); } } diff --git a/src/main/java/nextstep/main/view/ResultView.java b/src/main/java/nextstep/main/view/ResultView.java index f2eddd6e9e..437202e90a 100644 --- a/src/main/java/nextstep/main/view/ResultView.java +++ b/src/main/java/nextstep/main/view/ResultView.java @@ -10,6 +10,7 @@ public static void executeNames(Persons persons){ persons.getPersons() .forEach(System.out::print); + System.out.println(); } @@ -18,6 +19,11 @@ public static void drawLadder(Ladder ladder) { .forEach(System.out::println); } + public static void executeResults(Persons results){ + results.getPersons() + .forEach(System.out::print); + } + public static void resultWhoWin(){ System.out.println("결과를 보고 싶은 사람은?"); } diff --git a/src/main/java/nextstep/main/vo/Persons.java b/src/main/java/nextstep/main/vo/Persons.java index 3a8063d7d9..8b26049d6e 100644 --- a/src/main/java/nextstep/main/vo/Persons.java +++ b/src/main/java/nextstep/main/vo/Persons.java @@ -18,7 +18,6 @@ public static Persons generate(String names) { List persons = Arrays.stream(split(names)) .map(Person::new) .collect(Collectors.toList()); - return new Persons(persons); } From b3e6bc1f1b8a3b962c9936913d313b60d0149121 Mon Sep 17 00:00:00 2001 From: "paige.k" Date: Sat, 3 Aug 2019 10:11:09 +0900 Subject: [PATCH 12/26] =?UTF-8?q?step2=20=EC=A4=91=EA=B0=84=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/main/ConsoleMain.java | 7 +++++++ src/main/java/nextstep/main/view/InputView.java | 5 +++++ src/main/java/nextstep/main/view/ResultView.java | 4 ---- src/main/java/nextstep/main/vo/Persons.java | 8 ++++++++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main/java/nextstep/main/ConsoleMain.java b/src/main/java/nextstep/main/ConsoleMain.java index 1cf40cd570..0cadabd315 100644 --- a/src/main/java/nextstep/main/ConsoleMain.java +++ b/src/main/java/nextstep/main/ConsoleMain.java @@ -21,5 +21,12 @@ public static void main(String []args){ ResultView.executeNames(persons); ResultView.drawLadder(ladder); ResultView.executeResults(results); + + persons.settingResult(results); + + String personName = InputView.personResult(); + int position = persons.getStartPosition(personName); + + } } diff --git a/src/main/java/nextstep/main/view/InputView.java b/src/main/java/nextstep/main/view/InputView.java index 123d3a45ba..2896de1b7a 100644 --- a/src/main/java/nextstep/main/view/InputView.java +++ b/src/main/java/nextstep/main/view/InputView.java @@ -21,4 +21,9 @@ public static int maxLadderHeight() { return scanner.nextInt(); } + public static String personResult(){ + System.out.println("결과를 보고 싶은 사람은?\n"); + Scanner scanner = new Scanner(System.in); + return scanner.nextLine(); + } } diff --git a/src/main/java/nextstep/main/view/ResultView.java b/src/main/java/nextstep/main/view/ResultView.java index 437202e90a..07086c2372 100644 --- a/src/main/java/nextstep/main/view/ResultView.java +++ b/src/main/java/nextstep/main/view/ResultView.java @@ -24,10 +24,6 @@ public static void executeResults(Persons results){ .forEach(System.out::print); } - public static void resultWhoWin(){ - System.out.println("결과를 보고 싶은 사람은?"); - } - public static void textResultAll(){ System.out.println("실행 결과"); } diff --git a/src/main/java/nextstep/main/vo/Persons.java b/src/main/java/nextstep/main/vo/Persons.java index 8b26049d6e..9eba18d197 100644 --- a/src/main/java/nextstep/main/vo/Persons.java +++ b/src/main/java/nextstep/main/vo/Persons.java @@ -32,4 +32,12 @@ public int getPersonCount() { public List getPersons() { return this.persons; } + + public int getStartPosition(String personName) { + + } + + public void settingResult(Persons results) { + + } } From 47776fc7a92e163865c6c4b6edc888713a3d9f60 Mon Sep 17 00:00:00 2001 From: willing1026 <34908960+willing1026@users.noreply.github.com> Date: Sat, 3 Aug 2019 10:25:49 +0900 Subject: [PATCH 13/26] =?UTF-8?q?#=20add=20:=20=EA=B2=B0=EA=B3=BC=ED=99=95?= =?UTF-8?q?=EC=9D=B8=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/main/ConsoleMain.java | 5 +++-- src/main/java/nextstep/main/vo/Ladder.java | 5 +++++ src/main/java/nextstep/main/vo/Person.java | 4 ++++ src/main/java/nextstep/main/vo/Persons.java | 22 +++++++++++++++++--- 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/main/java/nextstep/main/ConsoleMain.java b/src/main/java/nextstep/main/ConsoleMain.java index 0cadabd315..53e30a8395 100644 --- a/src/main/java/nextstep/main/ConsoleMain.java +++ b/src/main/java/nextstep/main/ConsoleMain.java @@ -22,10 +22,11 @@ public static void main(String []args){ ResultView.drawLadder(ladder); ResultView.executeResults(results); - persons.settingResult(results); + persons.settingResult(ladder, results); String personName = InputView.personResult(); - int position = persons.getStartPosition(personName); + + } diff --git a/src/main/java/nextstep/main/vo/Ladder.java b/src/main/java/nextstep/main/vo/Ladder.java index 94192a8ce8..3414636f32 100644 --- a/src/main/java/nextstep/main/vo/Ladder.java +++ b/src/main/java/nextstep/main/vo/Ladder.java @@ -22,4 +22,9 @@ public int generateLadder(int ladderHeight, int playerCount) { public List getLines() { return this.lines; } + + public int getResult(int position) { + //TODO : Line을 반복하면서 position값 구하기 + return 0; + } } diff --git a/src/main/java/nextstep/main/vo/Person.java b/src/main/java/nextstep/main/vo/Person.java index 724d014d0f..073789e32b 100644 --- a/src/main/java/nextstep/main/vo/Person.java +++ b/src/main/java/nextstep/main/vo/Person.java @@ -23,4 +23,8 @@ public String toString() { return str; } + + public boolean isMatch(String personName) { + return name.equals(personName); + } } diff --git a/src/main/java/nextstep/main/vo/Persons.java b/src/main/java/nextstep/main/vo/Persons.java index 9eba18d197..57f37f11fe 100644 --- a/src/main/java/nextstep/main/vo/Persons.java +++ b/src/main/java/nextstep/main/vo/Persons.java @@ -1,5 +1,6 @@ package nextstep.main.vo; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -9,9 +10,11 @@ public class Persons { private static final String NAME_SEPARATOR = ","; private List persons; + private List results; public Persons(List players) { this.persons = Collections.unmodifiableList(players); + this.results = new ArrayList<>(); } public static Persons generate(String names) { @@ -34,10 +37,23 @@ public List getPersons() { } public int getStartPosition(String personName) { - + int index = 0; + for (Person person : persons) { + if (person.isMatch(personName)) { + return index; + } + index++; + } + throw new IllegalArgumentException("잘못된 참여자 이름입니다."); } - public void settingResult(Persons results) { - + public void settingResult(Ladder ladder, Persons results) { + //TODO : 모든 참여자 결과를 확인해서 저장 + for (Person person : persons) { + int position = 0; + position = ladder.getResult(position); + //TODO : 최종위치를 가지고 결과를 가져와서 저장 +// this.results.add(new Person(results.getResult(position))); + } } } From 113231cd00416befbbad50348a9725f8dc190d06 Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Sat, 3 Aug 2019 11:06:28 +0900 Subject: [PATCH 14/26] =?UTF-8?q?Update=20=EB=9D=BC=EC=9D=B8=EC=A7=84?= =?UTF-8?q?=ED=96=89=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/main/vo/Ladder.java | 6 ++++++ src/main/java/nextstep/main/vo/Line.java | 4 ++++ src/test/java/nextstep/main/ConsoleMainTest.java | 7 +++++++ src/test/java/nextstep/main/vo/LadderTest.java | 16 ++++++++++++++++ 4 files changed, 33 insertions(+) create mode 100644 src/test/java/nextstep/main/ConsoleMainTest.java diff --git a/src/main/java/nextstep/main/vo/Ladder.java b/src/main/java/nextstep/main/vo/Ladder.java index 3414636f32..11174bb141 100644 --- a/src/main/java/nextstep/main/vo/Ladder.java +++ b/src/main/java/nextstep/main/vo/Ladder.java @@ -25,6 +25,12 @@ public List getLines() { public int getResult(int position) { //TODO : Line을 반복하면서 position값 구하기 + List line = getLines().get(position).getPoints(); + for(Boolean isCheck : line){ + if(isCheck) + return 1; + return 0; + } return 0; } } diff --git a/src/main/java/nextstep/main/vo/Line.java b/src/main/java/nextstep/main/vo/Line.java index b1f06a09db..486288a9ad 100644 --- a/src/main/java/nextstep/main/vo/Line.java +++ b/src/main/java/nextstep/main/vo/Line.java @@ -68,4 +68,8 @@ private String pointToString(boolean b) { } return StringUtils.leftPad(VERTICAL, HORIZONTAL_SIZE, EMPTY); } + + public List getPoints() { + return points; + } } diff --git a/src/test/java/nextstep/main/ConsoleMainTest.java b/src/test/java/nextstep/main/ConsoleMainTest.java new file mode 100644 index 0000000000..30ced65c60 --- /dev/null +++ b/src/test/java/nextstep/main/ConsoleMainTest.java @@ -0,0 +1,7 @@ +package nextstep.main; + +import static org.junit.Assert.*; + +public class ConsoleMainTest { + +} \ No newline at end of file diff --git a/src/test/java/nextstep/main/vo/LadderTest.java b/src/test/java/nextstep/main/vo/LadderTest.java index b2d29f09df..e4f98d71a9 100644 --- a/src/test/java/nextstep/main/vo/LadderTest.java +++ b/src/test/java/nextstep/main/vo/LadderTest.java @@ -1,5 +1,6 @@ package nextstep.main.vo; +import nextstep.main.view.ResultView; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; @@ -16,4 +17,19 @@ public class LadderTest { //then assertThat(result).isEqualTo(1); } + + @Test + public void 사다리_결과값알기() { + //given + Ladder ladder = new Ladder(); + + //when + ladder.generateLadder(1, 2); + ResultView.drawLadder(ladder); + + int result = ladder.getResult(0); + + //then + assertThat(result).isEqualTo(0); + } } \ No newline at end of file From e80745c013c7fb99526dfb1bbc77d5758aa5c7e3 Mon Sep 17 00:00:00 2001 From: "paige.k" Date: Sat, 3 Aug 2019 11:23:51 +0900 Subject: [PATCH 15/26] =?UTF-8?q?step2=20=EA=B2=B0=EA=B3=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/nextstep/main/view/ResultView.java | 5 ++++ src/main/java/nextstep/main/vo/Ladder.java | 13 +++++------ src/main/java/nextstep/main/vo/Line.java | 23 ++++++++++++++++++- src/main/java/nextstep/main/vo/Persons.java | 9 +++++--- 4 files changed, 39 insertions(+), 11 deletions(-) diff --git a/src/main/java/nextstep/main/view/ResultView.java b/src/main/java/nextstep/main/view/ResultView.java index 07086c2372..39d1adf2e2 100644 --- a/src/main/java/nextstep/main/view/ResultView.java +++ b/src/main/java/nextstep/main/view/ResultView.java @@ -24,7 +24,12 @@ public static void executeResults(Persons results){ .forEach(System.out::print); } + public static void textResultPerson(){ + System.out.println("실행 결과"); + } + public static void textResultAll(){ System.out.println("실행 결과"); + } } diff --git a/src/main/java/nextstep/main/vo/Ladder.java b/src/main/java/nextstep/main/vo/Ladder.java index 11174bb141..5ba8bcd1dd 100644 --- a/src/main/java/nextstep/main/vo/Ladder.java +++ b/src/main/java/nextstep/main/vo/Ladder.java @@ -24,13 +24,12 @@ public List getLines() { } public int getResult(int position) { - //TODO : Line을 반복하면서 position값 구하기 - List line = getLines().get(position).getPoints(); - for(Boolean isCheck : line){ - if(isCheck) - return 1; - return 0; + int currentPosition = position; + + for(int i = 0; i< lines.size(); i++) { + currentPosition = lines.get(i).getPlusMinusPosition(currentPosition); } - return 0; + + return currentPosition; } } diff --git a/src/main/java/nextstep/main/vo/Line.java b/src/main/java/nextstep/main/vo/Line.java index 486288a9ad..94d0e36522 100644 --- a/src/main/java/nextstep/main/vo/Line.java +++ b/src/main/java/nextstep/main/vo/Line.java @@ -63,7 +63,7 @@ public String toString() { } private String pointToString(boolean b) { - if(b) { + if (b) { return StringUtils.leftPad(VERTICAL, HORIZONTAL_SIZE, DASH); } return StringUtils.leftPad(VERTICAL, HORIZONTAL_SIZE, EMPTY); @@ -72,4 +72,25 @@ private String pointToString(boolean b) { public List getPoints() { return points; } + + public int getPlusMinusPosition(int currentPosition) { + if (currentPosition == 0) { + return points.get(0) ? currentPosition + 1 : currentPosition; + } + + if (currentPosition == points.size()) { + return points.get(currentPosition - 1) ? currentPosition - 1 : currentPosition; + } + + if (points.get(currentPosition)) { + return currentPosition + 1; + } + + + if(points.get(currentPosition-1)) { + return currentPosition -1; + } + + return currentPosition; + } } diff --git a/src/main/java/nextstep/main/vo/Persons.java b/src/main/java/nextstep/main/vo/Persons.java index 57f37f11fe..036c491f23 100644 --- a/src/main/java/nextstep/main/vo/Persons.java +++ b/src/main/java/nextstep/main/vo/Persons.java @@ -1,5 +1,7 @@ package nextstep.main.vo; +import nextstep.main.view.ResultView; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -48,12 +50,13 @@ public int getStartPosition(String personName) { } public void settingResult(Ladder ladder, Persons results) { - //TODO : 모든 참여자 결과를 확인해서 저장 for (Person person : persons) { int position = 0; position = ladder.getResult(position); - //TODO : 최종위치를 가지고 결과를 가져와서 저장 -// this.results.add(new Person(results.getResult(position))); + this.results.add(results.getPersons().get(position)); + System.out.println(results.getPersons().get(position)); } + + } } From 2ffd68d494dd055cd226f4f8bcecef7f2d8a5db1 Mon Sep 17 00:00:00 2001 From: willing1026 <34908960+willing1026@users.noreply.github.com> Date: Sat, 3 Aug 2019 11:36:46 +0900 Subject: [PATCH 16/26] =?UTF-8?q?#=20add=20:=20=EA=B2=B0=EA=B3=BC=ED=99=95?= =?UTF-8?q?=EC=9D=B8=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/main/vo/Person.java | 6 ++++++ src/main/java/nextstep/main/vo/Persons.java | 10 +++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/nextstep/main/vo/Person.java b/src/main/java/nextstep/main/vo/Person.java index 073789e32b..bbbb0536c5 100644 --- a/src/main/java/nextstep/main/vo/Person.java +++ b/src/main/java/nextstep/main/vo/Person.java @@ -7,6 +7,7 @@ public class Person { private static final int MAX_NAME_COUNT = 5; private String name; + private String result; public Person(String name) { if (name.length() > MAX_NAME_COUNT) @@ -15,6 +16,11 @@ public Person(String name) { this.name = name; } + public Person(String name, String result) { + this.name = name; + this.result = result; + } + @Override public String toString() { String str = IntStream.range(0, MAX_NAME_COUNT - this.name.length()) diff --git a/src/main/java/nextstep/main/vo/Persons.java b/src/main/java/nextstep/main/vo/Persons.java index 036c491f23..367f02b94a 100644 --- a/src/main/java/nextstep/main/vo/Persons.java +++ b/src/main/java/nextstep/main/vo/Persons.java @@ -50,13 +50,9 @@ public int getStartPosition(String personName) { } public void settingResult(Ladder ladder, Persons results) { - for (Person person : persons) { - int position = 0; - position = ladder.getResult(position); - this.results.add(results.getPersons().get(position)); - System.out.println(results.getPersons().get(position)); + for (int i = 0 ; i < persons.size() ; i++ ) { + int resultPosition = ladder.getResult(i); + this.results.add(results.getPersons().get(resultPosition)); } - - } } From 3e3740e7861c6f8f3f09c1e8701258cd519c04b7 Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Sat, 3 Aug 2019 11:51:11 +0900 Subject: [PATCH 17/26] =?UTF-8?q?Update=20=EC=9D=BC=EB=8B=A8=20=EC=99=84?= =?UTF-8?q?=EC=84=B1=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81=20=ED=95=84?= =?UTF-8?q?=EC=9A=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/main/ConsoleMain.java | 4 +--- .../java/nextstep/main/view/ResultView.java | 3 ++- src/main/java/nextstep/main/vo/Persons.java | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/main/java/nextstep/main/ConsoleMain.java b/src/main/java/nextstep/main/ConsoleMain.java index 53e30a8395..4f394fb6d2 100644 --- a/src/main/java/nextstep/main/ConsoleMain.java +++ b/src/main/java/nextstep/main/ConsoleMain.java @@ -25,9 +25,7 @@ public static void main(String []args){ persons.settingResult(ladder, results); String personName = InputView.personResult(); - - - + ResultView.textResultPerson(persons.getLadderResult(personName)); } } diff --git a/src/main/java/nextstep/main/view/ResultView.java b/src/main/java/nextstep/main/view/ResultView.java index 39d1adf2e2..3e4a9b5c64 100644 --- a/src/main/java/nextstep/main/view/ResultView.java +++ b/src/main/java/nextstep/main/view/ResultView.java @@ -24,8 +24,9 @@ public static void executeResults(Persons results){ .forEach(System.out::print); } - public static void textResultPerson(){ + public static void textResultPerson(String result){ System.out.println("실행 결과"); + System.out.println(result); } public static void textResultAll(){ diff --git a/src/main/java/nextstep/main/vo/Persons.java b/src/main/java/nextstep/main/vo/Persons.java index 367f02b94a..f4a3069453 100644 --- a/src/main/java/nextstep/main/vo/Persons.java +++ b/src/main/java/nextstep/main/vo/Persons.java @@ -55,4 +55,23 @@ public void settingResult(Ladder ladder, Persons results) { this.results.add(results.getPersons().get(resultPosition)); } } + + public String getLadderResult(String personName) { + if(personName.equals("all")){ + StringBuilder sb = new StringBuilder(); + for(int i = 0 ; i< persons.size() ; i++){ + sb.append(persons.get(i).toString() + " : " + results.get(i).toString()); + sb.append("\n"); + } + return sb.toString(); + } + int resultIdx = 0; + for(int i = 0 ; i< persons.size() ; i++){ + if(personName.equals(persons.get(i))){ + resultIdx = i; + break; + } + } + return results.get(resultIdx).toString(); + } } From 2d1c5638736e4240db97a4659fb5c55cb605af7c Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Sat, 10 Aug 2019 10:43:34 +0900 Subject: [PATCH 18/26] =?UTF-8?q?Update=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81=20=EA=B5=AC=EC=A1=B0=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e87b3c269f..bea3aa8d0d 100644 --- a/README.md +++ b/README.md @@ -22,4 +22,9 @@ * InputView * ResultView * ConsoleMain - * 최종결과 확인해서 라인별로 반복한 값을 리턴시킴 \ No newline at end of file + * 최종결과 확인해서 라인별로 반복한 값을 리턴시킴 + + #190810 리팩토링 + - Persons의 객체에 results값 없애기 + - Persons의 객체에 results는 List으로 만들어 주기 + - 최종결과엔 Person 객체와 결과 객체를 매핑해주기 \ No newline at end of file From 928efca159e9dbe53cb3d279af121365a460c286 Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Sat, 10 Aug 2019 10:51:41 +0900 Subject: [PATCH 19/26] =?UTF-8?q?Update=20results=20List=ED=98=95?= =?UTF-8?q?=ED=83=9C=EB=A1=9C=20=EB=B3=80=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++--- src/main/java/nextstep/main/ConsoleMain.java | 7 ++++--- .../java/nextstep/main/utils/CommonUtils.java | 17 ++++++++++++++++ src/main/java/nextstep/main/utils/Consts.java | 5 +++++ .../java/nextstep/main/view/ResultView.java | 7 ++++--- src/main/java/nextstep/main/vo/Person.java | 6 ------ src/main/java/nextstep/main/vo/Persons.java | 20 ++++++++----------- 7 files changed, 41 insertions(+), 27 deletions(-) create mode 100644 src/main/java/nextstep/main/utils/CommonUtils.java create mode 100644 src/main/java/nextstep/main/utils/Consts.java diff --git a/README.md b/README.md index bea3aa8d0d..6ec19ab3d2 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,6 @@ * 최종결과 확인해서 라인별로 반복한 값을 리턴시킴 #190810 리팩토링 - - Persons의 객체에 results값 없애기 - - Persons의 객체에 results는 List으로 만들어 주기 - - 최종결과엔 Person 객체와 결과 객체를 매핑해주기 \ No newline at end of file + - [ ] Persons의 객체에 results값 없애기 + - [X] Persons의 객체에 results는 List으로 만들어 주기 + - [ ] 최종결과엔 Person 객체와 결과 객체를 매핑해주기 \ No newline at end of file diff --git a/src/main/java/nextstep/main/ConsoleMain.java b/src/main/java/nextstep/main/ConsoleMain.java index 4f394fb6d2..811ec0bff8 100644 --- a/src/main/java/nextstep/main/ConsoleMain.java +++ b/src/main/java/nextstep/main/ConsoleMain.java @@ -1,10 +1,13 @@ package nextstep.main; +import nextstep.main.utils.CommonUtils; import nextstep.main.view.InputView; import nextstep.main.view.ResultView; import nextstep.main.vo.Ladder; import nextstep.main.vo.Persons; +import java.util.List; + public class ConsoleMain { public static void main(String []args){ String playersName = InputView.playerNames(); @@ -13,7 +16,7 @@ public static void main(String []args){ int ladderHeight = InputView.maxLadderHeight(); Persons persons = Persons.generate(playersName); - Persons results = Persons.generate(playerResults); + List results = CommonUtils.generates(playerResults); Ladder ladder = new Ladder(); ladder.generateLadder(ladderHeight, persons.getPersonCount()); @@ -22,10 +25,8 @@ public static void main(String []args){ ResultView.drawLadder(ladder); ResultView.executeResults(results); - persons.settingResult(ladder, results); String personName = InputView.personResult(); ResultView.textResultPerson(persons.getLadderResult(personName)); - } } diff --git a/src/main/java/nextstep/main/utils/CommonUtils.java b/src/main/java/nextstep/main/utils/CommonUtils.java new file mode 100644 index 0000000000..083b1cb3dd --- /dev/null +++ b/src/main/java/nextstep/main/utils/CommonUtils.java @@ -0,0 +1,17 @@ +package nextstep.main.utils; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +public class CommonUtils { + public static String[] split(String value) { + return value.split(Consts.NAME_SEPARATOR); + } + + public static List generates(String names) { + return Arrays.stream(split(names)) + .map(String::new) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/nextstep/main/utils/Consts.java b/src/main/java/nextstep/main/utils/Consts.java new file mode 100644 index 0000000000..f51f2ec8b5 --- /dev/null +++ b/src/main/java/nextstep/main/utils/Consts.java @@ -0,0 +1,5 @@ +package nextstep.main.utils; + +public class Consts { + public static final String NAME_SEPARATOR = ","; +} diff --git a/src/main/java/nextstep/main/view/ResultView.java b/src/main/java/nextstep/main/view/ResultView.java index 3e4a9b5c64..9a377574c4 100644 --- a/src/main/java/nextstep/main/view/ResultView.java +++ b/src/main/java/nextstep/main/view/ResultView.java @@ -3,6 +3,8 @@ import nextstep.main.vo.Ladder; import nextstep.main.vo.Persons; +import java.util.List; + public class ResultView { public static void executeNames(Persons persons){ System.out.println("사다리 결과"); @@ -19,9 +21,8 @@ public static void drawLadder(Ladder ladder) { .forEach(System.out::println); } - public static void executeResults(Persons results){ - results.getPersons() - .forEach(System.out::print); + public static void executeResults(List results){ + results.forEach(System.out::print); } public static void textResultPerson(String result){ diff --git a/src/main/java/nextstep/main/vo/Person.java b/src/main/java/nextstep/main/vo/Person.java index bbbb0536c5..073789e32b 100644 --- a/src/main/java/nextstep/main/vo/Person.java +++ b/src/main/java/nextstep/main/vo/Person.java @@ -7,7 +7,6 @@ public class Person { private static final int MAX_NAME_COUNT = 5; private String name; - private String result; public Person(String name) { if (name.length() > MAX_NAME_COUNT) @@ -16,11 +15,6 @@ public Person(String name) { this.name = name; } - public Person(String name, String result) { - this.name = name; - this.result = result; - } - @Override public String toString() { String str = IntStream.range(0, MAX_NAME_COUNT - this.name.length()) diff --git a/src/main/java/nextstep/main/vo/Persons.java b/src/main/java/nextstep/main/vo/Persons.java index f4a3069453..45fbe6fb54 100644 --- a/src/main/java/nextstep/main/vo/Persons.java +++ b/src/main/java/nextstep/main/vo/Persons.java @@ -1,6 +1,7 @@ package nextstep.main.vo; -import nextstep.main.view.ResultView; + +import nextstep.main.utils.CommonUtils; import java.util.ArrayList; import java.util.Arrays; @@ -9,10 +10,8 @@ import java.util.stream.Collectors; public class Persons { - private static final String NAME_SEPARATOR = ","; - - private List persons; - private List results; + private List persons;//사람이름, 초기 사다리 순서 + private List results;//사다리탄 결과 public Persons(List players) { this.persons = Collections.unmodifiableList(players); @@ -20,16 +19,12 @@ public Persons(List players) { } public static Persons generate(String names) { - List persons = Arrays.stream(split(names)) + List persons = Arrays.stream(CommonUtils.split(names)) .map(Person::new) .collect(Collectors.toList()); return new Persons(persons); } - private static String[] split(String value) { - return value.split(NAME_SEPARATOR); - } - public int getPersonCount() { return this.persons.size(); } @@ -49,10 +44,11 @@ public int getStartPosition(String personName) { throw new IllegalArgumentException("잘못된 참여자 이름입니다."); } - public void settingResult(Ladder ladder, Persons results) { + //result + public void settingResult(Ladder ladder, List results) { for (int i = 0 ; i < persons.size() ; i++ ) { int resultPosition = ladder.getResult(i); - this.results.add(results.getPersons().get(resultPosition)); + this.results.add(results.get(resultPosition)); } } From 4cec062ab7214d127f779a1e7eeeebe073a7c968 Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Sat, 10 Aug 2019 10:54:03 +0900 Subject: [PATCH 20/26] Create LadderGameMapper --- src/main/java/nextstep/main/vo/LadderGameMapper.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/main/java/nextstep/main/vo/LadderGameMapper.java diff --git a/src/main/java/nextstep/main/vo/LadderGameMapper.java b/src/main/java/nextstep/main/vo/LadderGameMapper.java new file mode 100644 index 0000000000..3c099e8d46 --- /dev/null +++ b/src/main/java/nextstep/main/vo/LadderGameMapper.java @@ -0,0 +1,8 @@ +package nextstep.main.vo; + +import java.util.List; + +public class LadderGameMapper { + private List results;//사다리탄 결과 + +} From 560ebfb22d3b64e44e61e86321ce807eb5202aa3 Mon Sep 17 00:00:00 2001 From: willing1026 <34908960+willing1026@users.noreply.github.com> Date: Sat, 10 Aug 2019 11:05:43 +0900 Subject: [PATCH 21/26] =?UTF-8?q?Modify=20:=20=EA=B2=B0=EA=B3=BCMapper=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/main/ConsoleMain.java | 4 +++- .../java/nextstep/main/vo/LadderGameMapper.java | 16 ++++++++++++++++ src/main/java/nextstep/main/vo/Persons.java | 16 ++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/main/java/nextstep/main/ConsoleMain.java b/src/main/java/nextstep/main/ConsoleMain.java index 811ec0bff8..5b2358c33f 100644 --- a/src/main/java/nextstep/main/ConsoleMain.java +++ b/src/main/java/nextstep/main/ConsoleMain.java @@ -4,6 +4,7 @@ import nextstep.main.view.InputView; import nextstep.main.view.ResultView; import nextstep.main.vo.Ladder; +import nextstep.main.vo.LadderGameMapper; import nextstep.main.vo.Persons; import java.util.List; @@ -25,7 +26,8 @@ public static void main(String []args){ ResultView.drawLadder(ladder); ResultView.executeResults(results); - persons.settingResult(ladder, results); +// persons.settingResult2(ladder, results); + LadderGameMapper ladderGameMapper = persons.settingResult2(ladder, results); String personName = InputView.personResult(); ResultView.textResultPerson(persons.getLadderResult(personName)); } diff --git a/src/main/java/nextstep/main/vo/LadderGameMapper.java b/src/main/java/nextstep/main/vo/LadderGameMapper.java index 3c099e8d46..2570d3f27d 100644 --- a/src/main/java/nextstep/main/vo/LadderGameMapper.java +++ b/src/main/java/nextstep/main/vo/LadderGameMapper.java @@ -1,8 +1,24 @@ package nextstep.main.vo; import java.util.List; +import java.util.Map; +import java.util.Optional; public class LadderGameMapper { +// private Map resultsMap; private List results;//사다리탄 결과 + public LadderGameMapper(List results) { + this.results = results; + } + + public static LadderGameMapper generate(List userResults) { + return new LadderGameMapper(userResults); + } + + //참여자이름으로 결과 확인하기 + public String findResultByName(int index) { + return Optional.ofNullable(results.get(index)) + .orElse("참여자 이름이 잘못됐습니다."); + } } diff --git a/src/main/java/nextstep/main/vo/Persons.java b/src/main/java/nextstep/main/vo/Persons.java index 45fbe6fb54..75b8a8de8f 100644 --- a/src/main/java/nextstep/main/vo/Persons.java +++ b/src/main/java/nextstep/main/vo/Persons.java @@ -52,6 +52,18 @@ public void settingResult(Ladder ladder, List results) { } } + //result + public LadderGameMapper settingResult2(Ladder ladder, List results) { + List userResults = new ArrayList<>(); + + for (int i = 0 ; i < persons.size() ; i++ ) { + int resultPosition = ladder.getResult(i); + userResults.add(results.get(resultPosition)); + } + + return LadderGameMapper.generate(userResults); + } + public String getLadderResult(String personName) { if(personName.equals("all")){ StringBuilder sb = new StringBuilder(); @@ -70,4 +82,8 @@ public String getLadderResult(String personName) { } return results.get(resultIdx).toString(); } + + public int findIndexByName(String name) { + int index = 0; + } } From ee14b60b9a2cd046d9110361e5ef062af392552c Mon Sep 17 00:00:00 2001 From: "paige.k" Date: Sat, 10 Aug 2019 11:17:54 +0900 Subject: [PATCH 22/26] =?UTF-8?q?=EC=A4=91=EA=B0=84=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/main/ConsoleMain.java | 7 ++-- .../java/nextstep/main/view/ResultView.java | 12 ++---- .../nextstep/main/vo/LadderGameMapper.java | 1 - src/main/java/nextstep/main/vo/Persons.java | 42 +++++++------------ 4 files changed, 22 insertions(+), 40 deletions(-) diff --git a/src/main/java/nextstep/main/ConsoleMain.java b/src/main/java/nextstep/main/ConsoleMain.java index 5b2358c33f..f4629acf4d 100644 --- a/src/main/java/nextstep/main/ConsoleMain.java +++ b/src/main/java/nextstep/main/ConsoleMain.java @@ -26,9 +26,10 @@ public static void main(String []args){ ResultView.drawLadder(ladder); ResultView.executeResults(results); -// persons.settingResult2(ladder, results); - LadderGameMapper ladderGameMapper = persons.settingResult2(ladder, results); +// persons.settingResult(ladder, results); + LadderGameMapper ladderGameMapper = persons.settingResult(ladder, results); String personName = InputView.personResult(); - ResultView.textResultPerson(persons.getLadderResult(personName)); + String result = ladderGameMapper.findResultByName(persons.findIndexByName(personName)); + ResultView.textResultPerson(persons.getLadderResult(result)); } } diff --git a/src/main/java/nextstep/main/view/ResultView.java b/src/main/java/nextstep/main/view/ResultView.java index 9a377574c4..426378ce5a 100644 --- a/src/main/java/nextstep/main/view/ResultView.java +++ b/src/main/java/nextstep/main/view/ResultView.java @@ -6,13 +6,12 @@ import java.util.List; public class ResultView { - public static void executeNames(Persons persons){ + public static void executeNames(Persons persons) { System.out.println("사다리 결과"); persons.getPersons() .forEach(System.out::print); - System.out.println(); } @@ -21,17 +20,12 @@ public static void drawLadder(Ladder ladder) { .forEach(System.out::println); } - public static void executeResults(List results){ + public static void executeResults(List results) { results.forEach(System.out::print); } - public static void textResultPerson(String result){ + public static void textResultPerson(String result) { System.out.println("실행 결과"); System.out.println(result); } - - public static void textResultAll(){ - System.out.println("실행 결과"); - - } } diff --git a/src/main/java/nextstep/main/vo/LadderGameMapper.java b/src/main/java/nextstep/main/vo/LadderGameMapper.java index 2570d3f27d..ee0baf6a1d 100644 --- a/src/main/java/nextstep/main/vo/LadderGameMapper.java +++ b/src/main/java/nextstep/main/vo/LadderGameMapper.java @@ -5,7 +5,6 @@ import java.util.Optional; public class LadderGameMapper { -// private Map resultsMap; private List results;//사다리탄 결과 public LadderGameMapper(List results) { diff --git a/src/main/java/nextstep/main/vo/Persons.java b/src/main/java/nextstep/main/vo/Persons.java index 75b8a8de8f..57e502c455 100644 --- a/src/main/java/nextstep/main/vo/Persons.java +++ b/src/main/java/nextstep/main/vo/Persons.java @@ -11,11 +11,9 @@ public class Persons { private List persons;//사람이름, 초기 사다리 순서 - private List results;//사다리탄 결과 public Persons(List players) { this.persons = Collections.unmodifiableList(players); - this.results = new ArrayList<>(); } public static Persons generate(String names) { @@ -33,30 +31,11 @@ public List getPersons() { return this.persons; } - public int getStartPosition(String personName) { - int index = 0; - for (Person person : persons) { - if (person.isMatch(personName)) { - return index; - } - index++; - } - throw new IllegalArgumentException("잘못된 참여자 이름입니다."); - } - - //result - public void settingResult(Ladder ladder, List results) { - for (int i = 0 ; i < persons.size() ; i++ ) { - int resultPosition = ladder.getResult(i); - this.results.add(results.get(resultPosition)); - } - } - //result - public LadderGameMapper settingResult2(Ladder ladder, List results) { + public LadderGameMapper settingResult(Ladder ladder, List results) { List userResults = new ArrayList<>(); - for (int i = 0 ; i < persons.size() ; i++ ) { + for (int i = 0; i < persons.size(); i++) { int resultPosition = ladder.getResult(i); userResults.add(results.get(resultPosition)); } @@ -65,17 +44,17 @@ public LadderGameMapper settingResult2(Ladder ladder, List results) { } public String getLadderResult(String personName) { - if(personName.equals("all")){ + if (personName.equals("all")) { StringBuilder sb = new StringBuilder(); - for(int i = 0 ; i< persons.size() ; i++){ + for (int i = 0; i < persons.size(); i++) { sb.append(persons.get(i).toString() + " : " + results.get(i).toString()); sb.append("\n"); } return sb.toString(); } int resultIdx = 0; - for(int i = 0 ; i< persons.size() ; i++){ - if(personName.equals(persons.get(i))){ + for (int i = 0; i < persons.size(); i++) { + if (personName.equals(persons.get(i))) { resultIdx = i; break; } @@ -85,5 +64,14 @@ public String getLadderResult(String personName) { public int findIndexByName(String name) { int index = 0; + + for (Person person : persons) { + if (person.isMatch(name)) { + return index; + } + index++; + } + + throw new IllegalArgumentException("잘못된 참여자 이름입니다."); } } From 7bda094ddf34c58675bfdeba1f73556eb0a345d3 Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Sat, 10 Aug 2019 11:30:05 +0900 Subject: [PATCH 23/26] =?UTF-8?q?Update=20=EC=8B=A4=ED=96=89=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=20all?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/main/ConsoleMain.java | 6 +-- .../java/nextstep/main/view/ResultView.java | 1 + .../nextstep/main/vo/LadderGameMapper.java | 13 +++++++ src/main/java/nextstep/main/vo/Persons.java | 37 ++++++++++--------- 4 files changed, 36 insertions(+), 21 deletions(-) diff --git a/src/main/java/nextstep/main/ConsoleMain.java b/src/main/java/nextstep/main/ConsoleMain.java index f4629acf4d..c7de28d652 100644 --- a/src/main/java/nextstep/main/ConsoleMain.java +++ b/src/main/java/nextstep/main/ConsoleMain.java @@ -26,10 +26,10 @@ public static void main(String []args){ ResultView.drawLadder(ladder); ResultView.executeResults(results); -// persons.settingResult(ladder, results); LadderGameMapper ladderGameMapper = persons.settingResult(ladder, results); String personName = InputView.personResult(); - String result = ladderGameMapper.findResultByName(persons.findIndexByName(personName)); - ResultView.textResultPerson(persons.getLadderResult(result)); + + String result = ladderGameMapper.all(personName, persons); + ResultView.textResultPerson(result); } } diff --git a/src/main/java/nextstep/main/view/ResultView.java b/src/main/java/nextstep/main/view/ResultView.java index 426378ce5a..5b9b8811e7 100644 --- a/src/main/java/nextstep/main/view/ResultView.java +++ b/src/main/java/nextstep/main/view/ResultView.java @@ -22,6 +22,7 @@ public static void drawLadder(Ladder ladder) { public static void executeResults(List results) { results.forEach(System.out::print); + System.out.println(); } public static void textResultPerson(String result) { diff --git a/src/main/java/nextstep/main/vo/LadderGameMapper.java b/src/main/java/nextstep/main/vo/LadderGameMapper.java index ee0baf6a1d..c95aabb567 100644 --- a/src/main/java/nextstep/main/vo/LadderGameMapper.java +++ b/src/main/java/nextstep/main/vo/LadderGameMapper.java @@ -20,4 +20,17 @@ public String findResultByName(int index) { return Optional.ofNullable(results.get(index)) .orElse("참여자 이름이 잘못됐습니다."); } + + public String all(String personName, Persons persons) { + if("all".equals(personName)){ + List person = persons.getPersons(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < person.size(); i++) { + sb.append(person.get(i).toString().trim() + " : " + results.get(i)); + sb.append("\n"); + } + return sb.toString(); + } + return findResultByName(persons.findIndexByName(personName)); + } } diff --git a/src/main/java/nextstep/main/vo/Persons.java b/src/main/java/nextstep/main/vo/Persons.java index 57e502c455..a09d134af5 100644 --- a/src/main/java/nextstep/main/vo/Persons.java +++ b/src/main/java/nextstep/main/vo/Persons.java @@ -43,26 +43,27 @@ public LadderGameMapper settingResult(Ladder ladder, List results) { return LadderGameMapper.generate(userResults); } - public String getLadderResult(String personName) { - if (personName.equals("all")) { - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < persons.size(); i++) { - sb.append(persons.get(i).toString() + " : " + results.get(i).toString()); - sb.append("\n"); - } - return sb.toString(); - } - int resultIdx = 0; - for (int i = 0; i < persons.size(); i++) { - if (personName.equals(persons.get(i))) { - resultIdx = i; - break; - } - } - return results.get(resultIdx).toString(); - } +// public String getLadderResult(String personName) { +// if (personName.equals("all")) { +// StringBuilder sb = new StringBuilder(); +// for (int i = 0; i < persons.size(); i++) { +// sb.append(persons.get(i).toString() + " : " + results.get(i).toString()); +// sb.append("\n"); +// } +// return sb.toString(); +// } +// int resultIdx = 0; +// for (int i = 0; i < persons.size(); i++) { +// if (personName.equals(persons.get(i))) { +// resultIdx = i; +// break; +// } +// } +// return results.get(resultIdx).toString(); +// } public int findIndexByName(String name) { + int index = 0; for (Person person : persons) { From 7c044ee936eedee45f6ee7c39b9ffcb12fadac58 Mon Sep 17 00:00:00 2001 From: willing1026 <34908960+willing1026@users.noreply.github.com> Date: Sat, 10 Aug 2019 11:43:54 +0900 Subject: [PATCH 24/26] =?UTF-8?q?Modify=20:=20=EA=B2=B0=EA=B3=BC=EA=B3=B5?= =?UTF-8?q?=EB=B0=B1=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/main/utils/CommonUtils.java | 8 ++++++++ src/main/java/nextstep/main/utils/Consts.java | 1 + src/main/java/nextstep/main/view/InputView.java | 2 +- src/main/java/nextstep/main/view/ResultView.java | 3 ++- src/main/java/nextstep/main/vo/Person.java | 13 +++++-------- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/main/java/nextstep/main/utils/CommonUtils.java b/src/main/java/nextstep/main/utils/CommonUtils.java index 083b1cb3dd..149d3d51ae 100644 --- a/src/main/java/nextstep/main/utils/CommonUtils.java +++ b/src/main/java/nextstep/main/utils/CommonUtils.java @@ -3,6 +3,7 @@ import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; +import java.util.stream.IntStream; public class CommonUtils { public static String[] split(String value) { @@ -14,4 +15,11 @@ public static List generates(String names) { .map(String::new) .collect(Collectors.toList()); } + + public static String arrangeName(String value) { + String str = IntStream.range(0, Consts.MAX_NAME_COUNT - value.length()) + .mapToObj(i -> " ") + .collect(Collectors.joining("", value, " ")); + return str; + } } diff --git a/src/main/java/nextstep/main/utils/Consts.java b/src/main/java/nextstep/main/utils/Consts.java index f51f2ec8b5..3a9e9381dd 100644 --- a/src/main/java/nextstep/main/utils/Consts.java +++ b/src/main/java/nextstep/main/utils/Consts.java @@ -2,4 +2,5 @@ public class Consts { public static final String NAME_SEPARATOR = ","; + public static final int MAX_NAME_COUNT = 5; } diff --git a/src/main/java/nextstep/main/view/InputView.java b/src/main/java/nextstep/main/view/InputView.java index 2896de1b7a..2b8d1acb13 100644 --- a/src/main/java/nextstep/main/view/InputView.java +++ b/src/main/java/nextstep/main/view/InputView.java @@ -22,7 +22,7 @@ public static int maxLadderHeight() { } public static String personResult(){ - System.out.println("결과를 보고 싶은 사람은?\n"); + System.out.println("결과를 보고 싶은 사람은?"); Scanner scanner = new Scanner(System.in); return scanner.nextLine(); } diff --git a/src/main/java/nextstep/main/view/ResultView.java b/src/main/java/nextstep/main/view/ResultView.java index 5b9b8811e7..7068ce4f11 100644 --- a/src/main/java/nextstep/main/view/ResultView.java +++ b/src/main/java/nextstep/main/view/ResultView.java @@ -1,5 +1,6 @@ package nextstep.main.view; +import nextstep.main.utils.CommonUtils; import nextstep.main.vo.Ladder; import nextstep.main.vo.Persons; @@ -21,7 +22,7 @@ public static void drawLadder(Ladder ladder) { } public static void executeResults(List results) { - results.forEach(System.out::print); + results.forEach(name -> System.out.print(CommonUtils.arrangeName(name))); System.out.println(); } diff --git a/src/main/java/nextstep/main/vo/Person.java b/src/main/java/nextstep/main/vo/Person.java index 073789e32b..805befd337 100644 --- a/src/main/java/nextstep/main/vo/Person.java +++ b/src/main/java/nextstep/main/vo/Person.java @@ -1,15 +1,16 @@ package nextstep.main.vo; +import nextstep.main.utils.CommonUtils; +import nextstep.main.utils.Consts; + import java.util.stream.Collectors; import java.util.stream.IntStream; public class Person { - private static final int MAX_NAME_COUNT = 5; - private String name; public Person(String name) { - if (name.length() > MAX_NAME_COUNT) + if (name.length() > Consts.MAX_NAME_COUNT) throw new IllegalArgumentException(); this.name = name; @@ -17,11 +18,7 @@ public Person(String name) { @Override public String toString() { - String str = IntStream.range(0, MAX_NAME_COUNT - this.name.length()) - .mapToObj(i -> " ") - .collect(Collectors.joining("", this.name, " ")); - - return str; + return CommonUtils.arrangeName(this.name); } public boolean isMatch(String personName) { From a459186fc51dfa934f4c7aea47271a89349f157f Mon Sep 17 00:00:00 2001 From: "paige.k" Date: Sat, 10 Aug 2019 11:57:11 +0900 Subject: [PATCH 25/26] =?UTF-8?q?=EA=B2=B0=EA=B3=BC=EA=B0=92=20=EB=B0=98?= =?UTF-8?q?=EB=B3=B5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/main/ConsoleMain.java | 14 +++++++---- src/main/java/nextstep/main/utils/Consts.java | 1 + .../java/nextstep/main/view/InputView.java | 4 ++-- src/main/java/nextstep/main/vo/Ladder.java | 4 ++-- .../nextstep/main/vo/LadderGameMapper.java | 14 +++++------ src/main/java/nextstep/main/vo/Line.java | 16 ++++++------- src/main/java/nextstep/main/vo/Person.java | 3 --- src/main/java/nextstep/main/vo/Persons.java | 23 +------------------ 8 files changed, 29 insertions(+), 50 deletions(-) diff --git a/src/main/java/nextstep/main/ConsoleMain.java b/src/main/java/nextstep/main/ConsoleMain.java index c7de28d652..f272442b04 100644 --- a/src/main/java/nextstep/main/ConsoleMain.java +++ b/src/main/java/nextstep/main/ConsoleMain.java @@ -9,8 +9,10 @@ import java.util.List; +import static nextstep.main.utils.Consts.ALL_PERSON; + public class ConsoleMain { - public static void main(String []args){ + public static void main(String[] args) { String playersName = InputView.playerNames(); String playerResults = InputView.ladderResultPreDiction(); @@ -27,9 +29,11 @@ public static void main(String []args){ ResultView.executeResults(results); LadderGameMapper ladderGameMapper = persons.settingResult(ladder, results); - String personName = InputView.personResult(); - - String result = ladderGameMapper.all(personName, persons); - ResultView.textResultPerson(result); + String personName = ""; + while (!ALL_PERSON.equals(personName)) { + personName = InputView.personResult(); + String result = ladderGameMapper.getResult(personName, persons); + ResultView.textResultPerson(result); + } } } diff --git a/src/main/java/nextstep/main/utils/Consts.java b/src/main/java/nextstep/main/utils/Consts.java index 3a9e9381dd..01edf3dbb5 100644 --- a/src/main/java/nextstep/main/utils/Consts.java +++ b/src/main/java/nextstep/main/utils/Consts.java @@ -2,5 +2,6 @@ public class Consts { public static final String NAME_SEPARATOR = ","; + public static final String ALL_PERSON = "getResult"; public static final int MAX_NAME_COUNT = 5; } diff --git a/src/main/java/nextstep/main/view/InputView.java b/src/main/java/nextstep/main/view/InputView.java index 2b8d1acb13..736c3ca196 100644 --- a/src/main/java/nextstep/main/view/InputView.java +++ b/src/main/java/nextstep/main/view/InputView.java @@ -9,7 +9,7 @@ public static String playerNames() { return scanner.nextLine(); } - public static String ladderResultPreDiction(){ + public static String ladderResultPreDiction() { System.out.println("실행 결과를 입력하세요. (결과는 쉼표(,)로 구분하세요)"); Scanner scanner = new Scanner(System.in); return scanner.nextLine(); @@ -21,7 +21,7 @@ public static int maxLadderHeight() { return scanner.nextInt(); } - public static String personResult(){ + public static String personResult() { System.out.println("결과를 보고 싶은 사람은?"); Scanner scanner = new Scanner(System.in); return scanner.nextLine(); diff --git a/src/main/java/nextstep/main/vo/Ladder.java b/src/main/java/nextstep/main/vo/Ladder.java index 5ba8bcd1dd..dcf3754b09 100644 --- a/src/main/java/nextstep/main/vo/Ladder.java +++ b/src/main/java/nextstep/main/vo/Ladder.java @@ -26,8 +26,8 @@ public List getLines() { public int getResult(int position) { int currentPosition = position; - for(int i = 0; i< lines.size(); i++) { - currentPosition = lines.get(i).getPlusMinusPosition(currentPosition); + for (int i = 0; i < lines.size(); i++) { + currentPosition = lines.get(i).getPlusMinusPosition(currentPosition); } return currentPosition; diff --git a/src/main/java/nextstep/main/vo/LadderGameMapper.java b/src/main/java/nextstep/main/vo/LadderGameMapper.java index c95aabb567..e32eefbac6 100644 --- a/src/main/java/nextstep/main/vo/LadderGameMapper.java +++ b/src/main/java/nextstep/main/vo/LadderGameMapper.java @@ -1,11 +1,12 @@ package nextstep.main.vo; import java.util.List; -import java.util.Map; import java.util.Optional; +import static nextstep.main.utils.Consts.ALL_PERSON; + public class LadderGameMapper { - private List results;//사다리탄 결과 + private List results; public LadderGameMapper(List results) { this.results = results; @@ -15,14 +16,13 @@ public static LadderGameMapper generate(List userResults) { return new LadderGameMapper(userResults); } - //참여자이름으로 결과 확인하기 - public String findResultByName(int index) { + public String findResult(int index) { return Optional.ofNullable(results.get(index)) .orElse("참여자 이름이 잘못됐습니다."); } - public String all(String personName, Persons persons) { - if("all".equals(personName)){ + public String getResult(String personName, Persons persons) { + if (ALL_PERSON.equals(personName)) { List person = persons.getPersons(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < person.size(); i++) { @@ -31,6 +31,6 @@ public String all(String personName, Persons persons) { } return sb.toString(); } - return findResultByName(persons.findIndexByName(personName)); + return findResult(persons.findIndexByName(personName)); } } diff --git a/src/main/java/nextstep/main/vo/Line.java b/src/main/java/nextstep/main/vo/Line.java index 94d0e36522..e37c35d642 100644 --- a/src/main/java/nextstep/main/vo/Line.java +++ b/src/main/java/nextstep/main/vo/Line.java @@ -57,20 +57,18 @@ static boolean isEqual(boolean prevPoint, boolean newPoint) { @Override public String toString() { final StringBuilder str = new StringBuilder(" |"); - points.forEach(b -> str.append(pointToString(b))); + + points.forEach(isLine -> str.append(pointToString(isLine))); return str.toString(); } - private String pointToString(boolean b) { - if (b) { + private String pointToString(boolean isLine) { + if (isLine) { return StringUtils.leftPad(VERTICAL, HORIZONTAL_SIZE, DASH); } - return StringUtils.leftPad(VERTICAL, HORIZONTAL_SIZE, EMPTY); - } - public List getPoints() { - return points; + return StringUtils.leftPad(VERTICAL, HORIZONTAL_SIZE, EMPTY); } public int getPlusMinusPosition(int currentPosition) { @@ -87,8 +85,8 @@ public int getPlusMinusPosition(int currentPosition) { } - if(points.get(currentPosition-1)) { - return currentPosition -1; + if (points.get(currentPosition - 1)) { + return currentPosition - 1; } return currentPosition; diff --git a/src/main/java/nextstep/main/vo/Person.java b/src/main/java/nextstep/main/vo/Person.java index 805befd337..d547c07594 100644 --- a/src/main/java/nextstep/main/vo/Person.java +++ b/src/main/java/nextstep/main/vo/Person.java @@ -3,9 +3,6 @@ import nextstep.main.utils.CommonUtils; import nextstep.main.utils.Consts; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - public class Person { private String name; diff --git a/src/main/java/nextstep/main/vo/Persons.java b/src/main/java/nextstep/main/vo/Persons.java index a09d134af5..e6d6c261a4 100644 --- a/src/main/java/nextstep/main/vo/Persons.java +++ b/src/main/java/nextstep/main/vo/Persons.java @@ -10,7 +10,7 @@ import java.util.stream.Collectors; public class Persons { - private List persons;//사람이름, 초기 사다리 순서 + private List persons; public Persons(List players) { this.persons = Collections.unmodifiableList(players); @@ -31,7 +31,6 @@ public List getPersons() { return this.persons; } - //result public LadderGameMapper settingResult(Ladder ladder, List results) { List userResults = new ArrayList<>(); @@ -43,27 +42,7 @@ public LadderGameMapper settingResult(Ladder ladder, List results) { return LadderGameMapper.generate(userResults); } -// public String getLadderResult(String personName) { -// if (personName.equals("all")) { -// StringBuilder sb = new StringBuilder(); -// for (int i = 0; i < persons.size(); i++) { -// sb.append(persons.get(i).toString() + " : " + results.get(i).toString()); -// sb.append("\n"); -// } -// return sb.toString(); -// } -// int resultIdx = 0; -// for (int i = 0; i < persons.size(); i++) { -// if (personName.equals(persons.get(i))) { -// resultIdx = i; -// break; -// } -// } -// return results.get(resultIdx).toString(); -// } - public int findIndexByName(String name) { - int index = 0; for (Person person : persons) { From 301eb838b5fac25174eac5a1fe4f4e3950fa00b7 Mon Sep 17 00:00:00 2001 From: RudiaMoon Date: Sat, 28 Sep 2019 20:03:55 +0900 Subject: [PATCH 26/26] Udpate pushtest --- src/main/java/nextstep/main/utils/CommonUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/nextstep/main/utils/CommonUtils.java b/src/main/java/nextstep/main/utils/CommonUtils.java index 149d3d51ae..4b158fa8f6 100644 --- a/src/main/java/nextstep/main/utils/CommonUtils.java +++ b/src/main/java/nextstep/main/utils/CommonUtils.java @@ -5,7 +5,7 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; -public class CommonUtils { +public class CommonUtils {//push test public static String[] split(String value) { return value.split(Consts.NAME_SEPARATOR); }