From e62bb26d8048bd7cc4d6385e79f315fa6c86ce2c Mon Sep 17 00:00:00 2001 From: KimHoGyun Date: Sun, 19 Oct 2025 13:58:36 +0900 Subject: [PATCH 1/9] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20=EC=9A=94=EC=B2=AD?= =?UTF-8?q?=EC=82=AC=ED=95=AD=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/calculator/Application.java | 57 +++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/src/main/java/calculator/Application.java b/src/main/java/calculator/Application.java index 573580fb40..f3ecab9af2 100644 --- a/src/main/java/calculator/Application.java +++ b/src/main/java/calculator/Application.java @@ -1,7 +1,64 @@ package calculator; +import camp.nextstep.edu.missionutils.Console; +import java.util.List; +import java.util.ArrayList; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public class Application { public static void main(String[] args) { // TODO: 프로그램 구현 + System.out.println("입력할 문자열을 입력하시오\n"); + String input = Console.readLine(); + try{ + int result= add(input); + System.out.println("결과 : "+result); + + }catch (IllegalArgumentException e){ + System.out.println("오류 : "+ e.getMessage()); + } + + + } + public static String[] splitNumber(String text) { + String delimiter = ",|:"; + String numbersText=text; + if(text.startsWith("//")){ + Matcher matcher = Pattern.compile("//(.)\n(.*)").matcher(text); + if(matcher.matches()){ + delimiter = Pattern.quote(matcher.group(1)); + numbersText = matcher.group(2); + } + } + return numbersText.split(delimiter); + } + public static int add(String input){ + if(input==null||input.isEmpty()){ + return 0; + } + String[] numbers=splitNumber(input); + return sum(numbers); + } + public static int sum(String[] numbers){ + int sum = 0; + List negativeNumbers = new ArrayList<>(); + for(String numberStr : numbers){ + if(numberStr.trim().isEmpty()){ + continue; + } + try{ + int number = Integer.parseInt(numberStr.trim()); + if(number < 0){ + negativeNumbers.add(number); + } + sum += number; + }catch (NumberFormatException e){ + throw new IllegalArgumentException("잘못된 숫자 형식이 입력되었습니다:" + numberStr,e); + } + } + if(!negativeNumbers.isEmpty()){ + throw new IllegalArgumentException("음수는 입력 할 수 없습니다" + negativeNumbers); + } + return sum; } } From 56b91ab22597505c97994a17a234c6b4a0c01135 Mon Sep 17 00:00:00 2001 From: KimHoGyun Date: Sun, 19 Oct 2025 13:58:36 +0900 Subject: [PATCH 2/9] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20=EC=9A=94=EC=B2=AD?= =?UTF-8?q?=EC=82=AC=ED=95=AD=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/calculator/Application.java | 57 +++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/src/main/java/calculator/Application.java b/src/main/java/calculator/Application.java index 573580fb40..f3ecab9af2 100644 --- a/src/main/java/calculator/Application.java +++ b/src/main/java/calculator/Application.java @@ -1,7 +1,64 @@ package calculator; +import camp.nextstep.edu.missionutils.Console; +import java.util.List; +import java.util.ArrayList; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public class Application { public static void main(String[] args) { // TODO: 프로그램 구현 + System.out.println("입력할 문자열을 입력하시오\n"); + String input = Console.readLine(); + try{ + int result= add(input); + System.out.println("결과 : "+result); + + }catch (IllegalArgumentException e){ + System.out.println("오류 : "+ e.getMessage()); + } + + + } + public static String[] splitNumber(String text) { + String delimiter = ",|:"; + String numbersText=text; + if(text.startsWith("//")){ + Matcher matcher = Pattern.compile("//(.)\n(.*)").matcher(text); + if(matcher.matches()){ + delimiter = Pattern.quote(matcher.group(1)); + numbersText = matcher.group(2); + } + } + return numbersText.split(delimiter); + } + public static int add(String input){ + if(input==null||input.isEmpty()){ + return 0; + } + String[] numbers=splitNumber(input); + return sum(numbers); + } + public static int sum(String[] numbers){ + int sum = 0; + List negativeNumbers = new ArrayList<>(); + for(String numberStr : numbers){ + if(numberStr.trim().isEmpty()){ + continue; + } + try{ + int number = Integer.parseInt(numberStr.trim()); + if(number < 0){ + negativeNumbers.add(number); + } + sum += number; + }catch (NumberFormatException e){ + throw new IllegalArgumentException("잘못된 숫자 형식이 입력되었습니다:" + numberStr,e); + } + } + if(!negativeNumbers.isEmpty()){ + throw new IllegalArgumentException("음수는 입력 할 수 없습니다" + negativeNumbers); + } + return sum; } } From e77109c8c2bc30856117ca348f415a2830e76f60 Mon Sep 17 00:00:00 2001 From: KimHoGyun Date: Sun, 19 Oct 2025 14:40:31 +0900 Subject: [PATCH 3/9] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20=EC=9A=94=EC=B2=AD?= =?UTF-8?q?=EC=82=AC=ED=95=AD=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/calculator/Application.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/calculator/Application.java b/src/main/java/calculator/Application.java index f3ecab9af2..a8ebc7d6b7 100644 --- a/src/main/java/calculator/Application.java +++ b/src/main/java/calculator/Application.java @@ -24,7 +24,7 @@ public static String[] splitNumber(String text) { String delimiter = ",|:"; String numbersText=text; if(text.startsWith("//")){ - Matcher matcher = Pattern.compile("//(.)\n(.*)").matcher(text); + Matcher matcher = Pattern.compile("//(.)\\\\n(.*)").matcher(text); if(matcher.matches()){ delimiter = Pattern.quote(matcher.group(1)); numbersText = matcher.group(2); @@ -50,6 +50,7 @@ public static int sum(String[] numbers){ int number = Integer.parseInt(numberStr.trim()); if(number < 0){ negativeNumbers.add(number); + continue; } sum += number; }catch (NumberFormatException e){ From 2f84d7cb1a68b848523ee1ff791f094ac81e3e32 Mon Sep 17 00:00:00 2001 From: KimHoGyun Date: Sun, 19 Oct 2025 14:40:31 +0900 Subject: [PATCH 4/9] =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=951?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/calculator/Application.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/calculator/Application.java b/src/main/java/calculator/Application.java index f3ecab9af2..a8ebc7d6b7 100644 --- a/src/main/java/calculator/Application.java +++ b/src/main/java/calculator/Application.java @@ -24,7 +24,7 @@ public static String[] splitNumber(String text) { String delimiter = ",|:"; String numbersText=text; if(text.startsWith("//")){ - Matcher matcher = Pattern.compile("//(.)\n(.*)").matcher(text); + Matcher matcher = Pattern.compile("//(.)\\\\n(.*)").matcher(text); if(matcher.matches()){ delimiter = Pattern.quote(matcher.group(1)); numbersText = matcher.group(2); @@ -50,6 +50,7 @@ public static int sum(String[] numbers){ int number = Integer.parseInt(numberStr.trim()); if(number < 0){ negativeNumbers.add(number); + continue; } sum += number; }catch (NumberFormatException e){ From d7c41a0560f1d4294484221fd86062aecf637be9 Mon Sep 17 00:00:00 2001 From: KimHoGyun Date: Sun, 19 Oct 2025 14:58:07 +0900 Subject: [PATCH 5/9] =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +- src/main/java/calculator/Application.java | 62 ++++++++++++++--------- 2 files changed, 41 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index bd90ef0247..6f5139db06 100644 --- a/README.md +++ b/README.md @@ -1 +1,4 @@ -# java-calculator-precourse \ No newline at end of file +# java-calculator-precourse + +1. 커스텀 문자열을 두 개이상의 문자를 받아 커스텀으로 만들기 +2. 덧셈구현 외에도 계산기 시스템 모방하기 \ No newline at end of file diff --git a/src/main/java/calculator/Application.java b/src/main/java/calculator/Application.java index a8ebc7d6b7..460d9ffeea 100644 --- a/src/main/java/calculator/Application.java +++ b/src/main/java/calculator/Application.java @@ -1,4 +1,5 @@ package calculator; + import camp.nextstep.edu.missionutils.Console; import java.util.List; import java.util.ArrayList; @@ -6,60 +7,71 @@ import java.util.regex.Pattern; public class Application { + public static void main(String[] args) { - // TODO: 프로그램 구현 - System.out.println("입력할 문자열을 입력하시오\n"); + System.out.println("입력할 문자열을 입력하시오"); String input = Console.readLine(); - try{ - int result= add(input); - System.out.println("결과 : "+result); - - }catch (IllegalArgumentException e){ - System.out.println("오류 : "+ e.getMessage()); - } + try { + int result = add(input); + System.out.println("결과: " + result); + } catch (IllegalArgumentException e) { + System.out.println("오류: " + e.getMessage()); + } } + public static String[] splitNumber(String text) { String delimiter = ",|:"; - String numbersText=text; - if(text.startsWith("//")){ + String numbersText = text; + + if (text.startsWith("//")) { Matcher matcher = Pattern.compile("//(.)\\\\n(.*)").matcher(text); - if(matcher.matches()){ + if (matcher.matches()) { delimiter = Pattern.quote(matcher.group(1)); numbersText = matcher.group(2); } } + return numbersText.split(delimiter); } - public static int add(String input){ - if(input==null||input.isEmpty()){ + + public static int add(String input) { + if (input == null || input.isEmpty()) { return 0; } - String[] numbers=splitNumber(input); + + String[] numbers = splitNumber(input); return sum(numbers); } - public static int sum(String[] numbers){ + + public static int sum(String[] numbers) { int sum = 0; List negativeNumbers = new ArrayList<>(); - for(String numberStr : numbers){ - if(numberStr.trim().isEmpty()){ + + for (String numberStr : numbers) { + if (numberStr.trim().isEmpty()) { continue; } - try{ + + try { int number = Integer.parseInt(numberStr.trim()); - if(number < 0){ + if (number < 0) { negativeNumbers.add(number); continue; } sum += number; - }catch (NumberFormatException e){ - throw new IllegalArgumentException("잘못된 숫자 형식이 입력되었습니다:" + numberStr,e); + } catch (NumberFormatException e) { + throw new IllegalArgumentException( + "잘못된 숫자 형식이 입력되었습니다: " + numberStr, e); } } - if(!negativeNumbers.isEmpty()){ - throw new IllegalArgumentException("음수는 입력 할 수 없습니다" + negativeNumbers); + + if (!negativeNumbers.isEmpty()) { + throw new IllegalArgumentException( + "음수는 입력할 수 없습니다: " + negativeNumbers); } + return sum; } -} +} \ No newline at end of file From dbfc56a40259b05ef1283a074fb1b0fc48c97c6e Mon Sep 17 00:00:00 2001 From: KimHoGyun Date: Sun, 19 Oct 2025 14:58:07 +0900 Subject: [PATCH 6/9] =?UTF-8?q?=EC=B6=94=EA=B0=80=20=ED=95=A0=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EB=B0=8F=20=EC=8A=A4=ED=83=80=EC=9D=BC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +- src/main/java/calculator/Application.java | 62 ++++++++++++++--------- 2 files changed, 41 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index bd90ef0247..6f5139db06 100644 --- a/README.md +++ b/README.md @@ -1 +1,4 @@ -# java-calculator-precourse \ No newline at end of file +# java-calculator-precourse + +1. 커스텀 문자열을 두 개이상의 문자를 받아 커스텀으로 만들기 +2. 덧셈구현 외에도 계산기 시스템 모방하기 \ No newline at end of file diff --git a/src/main/java/calculator/Application.java b/src/main/java/calculator/Application.java index a8ebc7d6b7..460d9ffeea 100644 --- a/src/main/java/calculator/Application.java +++ b/src/main/java/calculator/Application.java @@ -1,4 +1,5 @@ package calculator; + import camp.nextstep.edu.missionutils.Console; import java.util.List; import java.util.ArrayList; @@ -6,60 +7,71 @@ import java.util.regex.Pattern; public class Application { + public static void main(String[] args) { - // TODO: 프로그램 구현 - System.out.println("입력할 문자열을 입력하시오\n"); + System.out.println("입력할 문자열을 입력하시오"); String input = Console.readLine(); - try{ - int result= add(input); - System.out.println("결과 : "+result); - - }catch (IllegalArgumentException e){ - System.out.println("오류 : "+ e.getMessage()); - } + try { + int result = add(input); + System.out.println("결과: " + result); + } catch (IllegalArgumentException e) { + System.out.println("오류: " + e.getMessage()); + } } + public static String[] splitNumber(String text) { String delimiter = ",|:"; - String numbersText=text; - if(text.startsWith("//")){ + String numbersText = text; + + if (text.startsWith("//")) { Matcher matcher = Pattern.compile("//(.)\\\\n(.*)").matcher(text); - if(matcher.matches()){ + if (matcher.matches()) { delimiter = Pattern.quote(matcher.group(1)); numbersText = matcher.group(2); } } + return numbersText.split(delimiter); } - public static int add(String input){ - if(input==null||input.isEmpty()){ + + public static int add(String input) { + if (input == null || input.isEmpty()) { return 0; } - String[] numbers=splitNumber(input); + + String[] numbers = splitNumber(input); return sum(numbers); } - public static int sum(String[] numbers){ + + public static int sum(String[] numbers) { int sum = 0; List negativeNumbers = new ArrayList<>(); - for(String numberStr : numbers){ - if(numberStr.trim().isEmpty()){ + + for (String numberStr : numbers) { + if (numberStr.trim().isEmpty()) { continue; } - try{ + + try { int number = Integer.parseInt(numberStr.trim()); - if(number < 0){ + if (number < 0) { negativeNumbers.add(number); continue; } sum += number; - }catch (NumberFormatException e){ - throw new IllegalArgumentException("잘못된 숫자 형식이 입력되었습니다:" + numberStr,e); + } catch (NumberFormatException e) { + throw new IllegalArgumentException( + "잘못된 숫자 형식이 입력되었습니다: " + numberStr, e); } } - if(!negativeNumbers.isEmpty()){ - throw new IllegalArgumentException("음수는 입력 할 수 없습니다" + negativeNumbers); + + if (!negativeNumbers.isEmpty()) { + throw new IllegalArgumentException( + "음수는 입력할 수 없습니다: " + negativeNumbers); } + return sum; } -} +} \ No newline at end of file From c0f7245cfe313e2c1eaa642f2519ec056634fba7 Mon Sep 17 00:00:00 2001 From: KimHoGyun Date: Sun, 19 Oct 2025 21:12:03 +0900 Subject: [PATCH 7/9] =?UTF-8?q?=EA=B3=BC=EC=A0=9C=EC=99=80=20=EB=98=91?= =?UTF-8?q?=EA=B0=99=EC=9D=80=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/calculator/Application.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/calculator/Application.java b/src/main/java/calculator/Application.java index 460d9ffeea..0948e5d020 100644 --- a/src/main/java/calculator/Application.java +++ b/src/main/java/calculator/Application.java @@ -9,12 +9,12 @@ public class Application { public static void main(String[] args) { - System.out.println("입력할 문자열을 입력하시오"); + System.out.println("덧셈할 문자열을 입력해 주세요."); String input = Console.readLine(); try { int result = add(input); - System.out.println("결과: " + result); + System.out.println("결과 : " + result); } catch (IllegalArgumentException e) { System.out.println("오류: " + e.getMessage()); From c27c712906dcb2211c5ed2c179060679f7c609f4 Mon Sep 17 00:00:00 2001 From: KimHoGyun Date: Sun, 19 Oct 2025 21:36:33 +0900 Subject: [PATCH 8/9] =?UTF-8?q?=EA=B3=BC=EC=A0=9C=EC=99=80=20=EB=98=91?= =?UTF-8?q?=EA=B0=99=EC=9D=80=20=EC=B6=9C=EB=A0=A5=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/calculator/Application.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/calculator/Application.java b/src/main/java/calculator/Application.java index 0948e5d020..00a5103e4e 100644 --- a/src/main/java/calculator/Application.java +++ b/src/main/java/calculator/Application.java @@ -17,7 +17,7 @@ public static void main(String[] args) { System.out.println("결과 : " + result); } catch (IllegalArgumentException e) { - System.out.println("오류: " + e.getMessage()); + } } @@ -62,14 +62,12 @@ public static int sum(String[] numbers) { } sum += number; } catch (NumberFormatException e) { - throw new IllegalArgumentException( - "잘못된 숫자 형식이 입력되었습니다: " + numberStr, e); + throw new IllegalArgumentException(); } } if (!negativeNumbers.isEmpty()) { - throw new IllegalArgumentException( - "음수는 입력할 수 없습니다: " + negativeNumbers); + throw new IllegalArgumentException(); } return sum; From 085de644ebc6379ffaa4a410726ef7ced4b7b769 Mon Sep 17 00:00:00 2001 From: KimHoGyun Date: Sun, 19 Oct 2025 22:25:37 +0900 Subject: [PATCH 9/9] =?UTF-8?q?Error=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/calculator/Application.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/calculator/Application.java b/src/main/java/calculator/Application.java index 00a5103e4e..f600cbd54b 100644 --- a/src/main/java/calculator/Application.java +++ b/src/main/java/calculator/Application.java @@ -17,7 +17,7 @@ public static void main(String[] args) { System.out.println("결과 : " + result); } catch (IllegalArgumentException e) { - + throw new IllegalArgumentException(e); } } @@ -57,8 +57,7 @@ public static int sum(String[] numbers) { try { int number = Integer.parseInt(numberStr.trim()); if (number < 0) { - negativeNumbers.add(number); - continue; + throw new IllegalArgumentException("잘못"); } sum += number; } catch (NumberFormatException e) {