From 46a40d561e0b09db034299f85fc1e475b359b312 Mon Sep 17 00:00:00 2001 From: szoon2426 Date: Fri, 7 Feb 2025 23:30:47 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20=EA=B5=AC=EB=B6=84?= =?UTF-8?q?=EC=9E=90=20=EB=AC=B8=EC=9E=90=EC=97=B4=20=EA=B3=84=EC=82=B0?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/calculator/Application.java | 37 +++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/main/java/calculator/Application.java b/src/main/java/calculator/Application.java index 573580f..d39d1f6 100644 --- a/src/main/java/calculator/Application.java +++ b/src/main/java/calculator/Application.java @@ -1,7 +1,44 @@ package calculator; +import camp.nextstep.edu.missionutils.Console; +/*입력한 문자열에서 숫자를 추출하여 더하는 계산기를 구현한다. + +- 쉼표(,) 또는 콜론(:)을 구분자로 가지는 문자열을 전달하는 경우 구분자를 기준으로 분리한 각 숫자의 합을 반환한다. + - 예: "" => 0, "1,2" => 3, "1,2,3" => 6, "1,2:3" => 6 + - 앞의 기본 구분자(쉼표, 콜론) 외에 커스텀 구분자를 지정할 수 있다. 커스텀 구분자는 문자열 앞부분의 "//"와 "\n" 사이에 위치하는 문자를 커스텀 구분자로 사용한다. + - 예를 들어 "//;\n1;2;3"과 같이 값을 입력할 경우 커스텀 구분자는 세미콜론(;)이며, 결과 값은 6이 반환되어야 한다. +- 사용자가 잘못된 값을 입력할 경우 `IllegalArgumentException`을 발생시킨 후 애플리케이션은 종료되어야 한다.*/ public class Application { public static void main(String[] args) { // TODO: 프로그램 구현 + + // 변수 선언 + String stnc; // 입력값 + int answer = 0; + + // 문자열 입력받기 + System.out.println("덧셈할 문자열을 입력해 주세요."); + stnc = Console.readLine(); + + int odr = 0; + int tmp = 1; + + for(int i = 0; i=odr; j--){ + answer += (stnc.charAt(j)-48) * tmp; + tmp *= 10; + } + tmp = 1; + odr = i+1; + }else if(i==stnc.length()-1){ // 마지막에는 구분자 이후의 숫자를 더함 + for(int j = i; j>=odr; j--){ + answer += (stnc.charAt(j)-48) * tmp; + tmp *= 10; + } + } + } + + System.out.println("결과 : " + answer); } } From 7e5b46929ac6e087bf3a98b8256d6230b853f44d Mon Sep 17 00:00:00 2001 From: szoon2426 Date: Fri, 7 Feb 2025 23:51:27 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=EC=BB=A4=EC=8A=A4=ED=85=80=20=EA=B5=AC?= =?UTF-8?q?=EB=B6=84=EC=9E=90=20=EB=AC=B8=EC=9E=90=EC=97=B4=20=EA=B3=84?= =?UTF-8?q?=EC=82=B0=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/calculator/Application.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/calculator/Application.java b/src/main/java/calculator/Application.java index d39d1f6..a065c80 100644 --- a/src/main/java/calculator/Application.java +++ b/src/main/java/calculator/Application.java @@ -15,6 +15,9 @@ public static void main(String[] args) { // 변수 선언 String stnc; // 입력값 int answer = 0; + boolean hasCustomed = false; + char customId = ','; // 커스텀 구분자 + // 문자열 입력받기 System.out.println("덧셈할 문자열을 입력해 주세요."); @@ -23,8 +26,16 @@ public static void main(String[] args) { int odr = 0; int tmp = 1; - for(int i = 0; i=odr; j--){ answer += (stnc.charAt(j)-48) * tmp; tmp *= 10; From ff4196db1d68a96196ac4527bc904200088277fb Mon Sep 17 00:00:00 2001 From: szoon2426 Date: Sun, 9 Feb 2025 01:47:12 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=EC=BB=A4=EC=8A=A4=ED=85=80=20=EA=B5=AC?= =?UTF-8?q?=EB=B6=84=EC=9E=90=20=EB=AC=B8=EC=9E=90=EC=97=B4=20=EA=B3=84?= =?UTF-8?q?=EC=82=B0=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/calculator/Application.java | 24 ++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/main/java/calculator/Application.java b/src/main/java/calculator/Application.java index a065c80..3cc3b03 100644 --- a/src/main/java/calculator/Application.java +++ b/src/main/java/calculator/Application.java @@ -23,30 +23,32 @@ public static void main(String[] args) { System.out.println("덧셈할 문자열을 입력해 주세요."); stnc = Console.readLine(); - int odr = 0; - int tmp = 1; + int i=0; if(stnc.substring(0,2).equals("//") && stnc.substring(3,5).equals("\\n")){ customId = stnc.charAt(2); hasCustomed = true; + i=5; } - - int i = 0; boolean condition= stnc.charAt(i) == ',' || stnc.charAt(i) == ':'; // 오류가 나는데 왜 나는지 모르겠어요,,,, - if(hasCustomed){i=5; condition = condition || stnc.charAt(i) == customId;} + int odr = i; + int tmp = 1; for(; i=odr; j--){ + boolean condition= stnc.charAt(i) == ',' || stnc.charAt(i) == ':'; + if(hasCustomed){condition = condition || stnc.charAt(i) == customId;} + + if(i==stnc.length()-1){ // 마지막에는 구분자 이후의 숫자를 더함 + for(int j = i; j>=odr; j--){ answer += (stnc.charAt(j)-48) * tmp; tmp *= 10; } - tmp = 1; - odr = i+1; - }else if(i==stnc.length()-1){ // 마지막에는 구분자 이후의 숫자를 더함 - for(int j = i; j>=odr; j--){ + }else if(condition){ // , 이나 : 나오면 그 전까지를 answer에 더함 + for(int j = i-1; j>=odr; j--){ answer += (stnc.charAt(j)-48) * tmp; tmp *= 10; } + tmp = 1; + odr = i+1; } } From 3a27e908f0353847115dae3261955cd832487d8b Mon Sep 17 00:00:00 2001 From: szoon2426 Date: Sun, 9 Feb 2025 02:17:37 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=EC=98=88=EC=99=B8=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EB=AC=B8=EC=9E=90=EC=97=B4=20=EA=B3=84=EC=82=B0=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/calculator/Application.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/calculator/Application.java b/src/main/java/calculator/Application.java index 3cc3b03..b9c0ea4 100644 --- a/src/main/java/calculator/Application.java +++ b/src/main/java/calculator/Application.java @@ -34,17 +34,20 @@ public static void main(String[] args) { int tmp = 1; for(; i=odr; j--){ - answer += (stnc.charAt(j)-48) * tmp; + if(48 > num || num>57){throw new IllegalArgumentException();} + answer += (num-48) * tmp; tmp *= 10; } }else if(condition){ // , 이나 : 나오면 그 전까지를 answer에 더함 for(int j = i-1; j>=odr; j--){ - answer += (stnc.charAt(j)-48) * tmp; + if(48 > num || num>57){throw new IllegalArgumentException();} + answer += (num-48) * tmp; tmp *= 10; } tmp = 1;