From 0f2660b3d3a99f86f3619e9f444e517cb4b66562 Mon Sep 17 00:00:00 2001 From: hj1115hj Date: Wed, 31 May 2023 00:52:40 +0900 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20input=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ladder/Application.java | 12 ++++++++++++ src/main/java/ladder/ui/InputView.java | 25 +++++++++++++++++++++++++ src/main/java/ladder/ui/PrintView.java | 4 ++++ 3 files changed, 41 insertions(+) create mode 100644 src/main/java/ladder/Application.java create mode 100644 src/main/java/ladder/ui/InputView.java create mode 100644 src/main/java/ladder/ui/PrintView.java diff --git a/src/main/java/ladder/Application.java b/src/main/java/ladder/Application.java new file mode 100644 index 0000000000..6fcb47cf76 --- /dev/null +++ b/src/main/java/ladder/Application.java @@ -0,0 +1,12 @@ +package ladder; + +import ladder.ui.InputView; + +public class Application { + public static void main(String[] args) { + InputView inputView = new InputView(); + inputView.saveInput(); + System.out.println(inputView.names); + } + +} diff --git a/src/main/java/ladder/ui/InputView.java b/src/main/java/ladder/ui/InputView.java new file mode 100644 index 0000000000..c426b8dd6f --- /dev/null +++ b/src/main/java/ladder/ui/InputView.java @@ -0,0 +1,25 @@ +package ladder.ui; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Scanner; + +public class InputView { + private final Scanner scanner = new Scanner(System.in); + public List names; + public int ladderHeight = 0; + + public void saveInput() { + System.out.println("참여할 사람 이름을 입력하세요. (이름은 쉼표(,)로 구분하세요)"); + String nameStr = scanner.nextLine(); + names= Arrays.asList(split(nameStr)); + ladderHeight = names.size(); + } + + private String[] split(String str) { + return str.split(","); + } + + +} diff --git a/src/main/java/ladder/ui/PrintView.java b/src/main/java/ladder/ui/PrintView.java new file mode 100644 index 0000000000..733bd2a10a --- /dev/null +++ b/src/main/java/ladder/ui/PrintView.java @@ -0,0 +1,4 @@ +package ladder.ui; + +public class PrintView { +} From c423efe9406073f822141a668810ec1c30a99085 Mon Sep 17 00:00:00 2001 From: hj1115hj Date: Wed, 31 May 2023 00:59:31 +0900 Subject: [PATCH 2/5] =?UTF-8?q?feat:=20util=20=ED=81=B4=EB=9E=98=EC=8A=A4?= =?UTF-8?q?=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/ladder/util/RandomValueGenerator.java | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/main/java/ladder/util/RandomValueGenerator.java diff --git a/src/main/java/ladder/util/RandomValueGenerator.java b/src/main/java/ladder/util/RandomValueGenerator.java new file mode 100644 index 0000000000..78c42efc3d --- /dev/null +++ b/src/main/java/ladder/util/RandomValueGenerator.java @@ -0,0 +1,11 @@ +package ladder.util; + +import java.util.Random; + +public class RandomValueGenerator { + private static Random random = new Random(); + + public static boolean generate() { + return random.nextBoolean(); + } +} From 320216224510c1e17611f6f8e459f27c4f8d05c9 Mon Sep 17 00:00:00 2001 From: hj1115hj Date: Wed, 31 May 2023 02:06:20 +0900 Subject: [PATCH 3/5] =?UTF-8?q?feat:=20ladder,=20line=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=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/ladder/Application.java | 4 +++ src/main/java/ladder/Ladder.java | 19 +++++++++++ src/main/java/ladder/Line.java | 20 +++++++++++ src/main/java/ladder/ui/InputView.java | 3 +- src/main/java/ladder/ui/PrintView.java | 46 ++++++++++++++++++++++++++ 5 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 src/main/java/ladder/Ladder.java create mode 100644 src/main/java/ladder/Line.java diff --git a/src/main/java/ladder/Application.java b/src/main/java/ladder/Application.java index 6fcb47cf76..0c57fc9c9d 100644 --- a/src/main/java/ladder/Application.java +++ b/src/main/java/ladder/Application.java @@ -1,12 +1,16 @@ package ladder; import ladder.ui.InputView; +import ladder.ui.PrintView; public class Application { public static void main(String[] args) { InputView inputView = new InputView(); inputView.saveInput(); System.out.println(inputView.names); + Ladder ladder= new Ladder(inputView.ladderHeight, inputView.names.size()); + PrintView.printResult(inputView.names, ladder); + } } diff --git a/src/main/java/ladder/Ladder.java b/src/main/java/ladder/Ladder.java new file mode 100644 index 0000000000..d1f21149a9 --- /dev/null +++ b/src/main/java/ladder/Ladder.java @@ -0,0 +1,19 @@ +package ladder; + +import java.util.ArrayList; +import java.util.List; + +public class Ladder { + private List lines = new ArrayList<>(); + + public Ladder(int height, int nameSize){ + for(int i=0; i getLines(){ + return lines; + } + +} diff --git a/src/main/java/ladder/Line.java b/src/main/java/ladder/Line.java new file mode 100644 index 0000000000..f0b799c0b6 --- /dev/null +++ b/src/main/java/ladder/Line.java @@ -0,0 +1,20 @@ +package ladder; + +import ladder.util.RandomValueGenerator; + +import java.util.ArrayList; +import java.util.List; + +public class Line { + private List points = new ArrayList<>(); + + public Line(int countOfPerson) { + for (int i = 0; i < countOfPerson - 1; i++) { + points.add(RandomValueGenerator.generate()); + } + } + + public List getPoints(){ + return points; + } +} diff --git a/src/main/java/ladder/ui/InputView.java b/src/main/java/ladder/ui/InputView.java index c426b8dd6f..e3e38672ce 100644 --- a/src/main/java/ladder/ui/InputView.java +++ b/src/main/java/ladder/ui/InputView.java @@ -14,7 +14,8 @@ public void saveInput() { System.out.println("참여할 사람 이름을 입력하세요. (이름은 쉼표(,)로 구분하세요)"); String nameStr = scanner.nextLine(); names= Arrays.asList(split(nameStr)); - ladderHeight = names.size(); + System.out.println("최대 사다리 높이는 몇개 인가요?"); + ladderHeight = scanner.nextInt(); } private String[] split(String str) { diff --git a/src/main/java/ladder/ui/PrintView.java b/src/main/java/ladder/ui/PrintView.java index 733bd2a10a..0bf65b7a33 100644 --- a/src/main/java/ladder/ui/PrintView.java +++ b/src/main/java/ladder/ui/PrintView.java @@ -1,4 +1,50 @@ package ladder.ui; +import ladder.Ladder; +import ladder.Line; + +import java.util.List; + public class PrintView { + public static void printResult(List names, Ladder ladder) { + System.out.println("실행결과"); + printName(names); + printLadder(ladder); + } + + private static void printName(List names) { + for (String name : names) { + int padding = 5 - name.length(); + System.out.print(name); + for (int i = 0; i < padding; i++) { + System.out.print(" "); + } + } + System.out.println(); + } + + + private static void printLadder(Ladder ladder) { + List lines = ladder.getLines(); + for (Line line : lines) { + printColumn(); + for (Boolean point : line.getPoints()) { + printRow(point); + printColumn(); + } + System.out.println(); + } + } + + private static void printColumn(){ + System.out.print("|"); + } + + private static void printRow(boolean point){ + if(point){ + System.out.print("-----"); + } else{ + System.out.print(" "); + } + } } From db8230c117c35a4f09fae040fa289007f3ef8524 Mon Sep 17 00:00:00 2001 From: hj1115hj Date: Wed, 31 May 2023 02:47:06 +0900 Subject: [PATCH 4/5] =?UTF-8?q?feat:=20=EC=82=AC=EB=8B=A4=EB=A6=AC=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20=EC=A0=9C=EC=95=BD=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ladder/Line.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/ladder/Line.java b/src/main/java/ladder/Line.java index f0b799c0b6..0707bc0265 100644 --- a/src/main/java/ladder/Line.java +++ b/src/main/java/ladder/Line.java @@ -10,11 +10,24 @@ public class Line { public Line(int countOfPerson) { for (int i = 0; i < countOfPerson - 1; i++) { - points.add(RandomValueGenerator.generate()); + if (isInValidPosition(i)) { + points.add(false); + } else { + points.add(RandomValueGenerator.generate()); + } } } - public List getPoints(){ + private boolean isInValidPosition(int position) { + return isLeftTrue(position); + } + + private boolean isLeftTrue(int position) { + return (position - 1 >= 0 && points.get(position - 1)); + } + + + public List getPoints() { return points; } } From 16498ab8bbc5cfea3f22afbfaf4309f77bbb7284 Mon Sep 17 00:00:00 2001 From: hj1115hj Date: Wed, 31 May 2023 02:56:46 +0900 Subject: [PATCH 5/5] =?UTF-8?q?feat:=20for=EB=AC=B8=20stream=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ladder/Ladder.java | 12 +++++++----- src/main/java/ladder/Line.java | 13 +++++-------- src/main/java/ladder/ui/InputView.java | 1 - src/main/java/ladder/ui/PrintView.java | 23 +++++++++++------------ 4 files changed, 23 insertions(+), 26 deletions(-) diff --git a/src/main/java/ladder/Ladder.java b/src/main/java/ladder/Ladder.java index d1f21149a9..e91eb20d4f 100644 --- a/src/main/java/ladder/Ladder.java +++ b/src/main/java/ladder/Ladder.java @@ -2,14 +2,16 @@ import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; public class Ladder { - private List lines = new ArrayList<>(); + private List lines; - public Ladder(int height, int nameSize){ - for(int i=0; i new Line(nameSize)) + .collect(Collectors.toList()); } public List getLines(){ diff --git a/src/main/java/ladder/Line.java b/src/main/java/ladder/Line.java index 0707bc0265..0742416675 100644 --- a/src/main/java/ladder/Line.java +++ b/src/main/java/ladder/Line.java @@ -4,18 +4,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.stream.IntStream; public class Line { - private List points = new ArrayList<>(); + private final List points = new ArrayList<>(); public Line(int countOfPerson) { - for (int i = 0; i < countOfPerson - 1; i++) { - if (isInValidPosition(i)) { - points.add(false); - } else { - points.add(RandomValueGenerator.generate()); - } - } + IntStream.range(0, countOfPerson - 1) + .mapToObj(i -> isInValidPosition(i) ? false : RandomValueGenerator.generate()) + .forEach(points::add); } private boolean isInValidPosition(int position) { diff --git a/src/main/java/ladder/ui/InputView.java b/src/main/java/ladder/ui/InputView.java index e3e38672ce..4734eba377 100644 --- a/src/main/java/ladder/ui/InputView.java +++ b/src/main/java/ladder/ui/InputView.java @@ -1,6 +1,5 @@ package ladder.ui; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; diff --git a/src/main/java/ladder/ui/PrintView.java b/src/main/java/ladder/ui/PrintView.java index 0bf65b7a33..f5f183a1b5 100644 --- a/src/main/java/ladder/ui/PrintView.java +++ b/src/main/java/ladder/ui/PrintView.java @@ -13,27 +13,26 @@ public static void printResult(List names, Ladder ladder) { } private static void printName(List names) { - for (String name : names) { - int padding = 5 - name.length(); - System.out.print(name); - for (int i = 0; i < padding; i++) { - System.out.print(" "); - } - } + names.stream() + .map(name -> { + int padding = 5 - name.length(); + String paddedName = name + " ".repeat(padding); + return paddedName; + }) + .forEach(System.out::print); System.out.println(); } - private static void printLadder(Ladder ladder) { List lines = ladder.getLines(); - for (Line line : lines) { + lines.forEach(line -> { printColumn(); - for (Boolean point : line.getPoints()) { + line.getPoints().forEach(point -> { printRow(point); printColumn(); - } + }); System.out.println(); - } + }); } private static void printColumn(){