Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,14 @@
# java-calculator-precourse
# java-calculator-precourse
기능 1. 사용자의 입력값을 읽는다.

입력값을 받을 땐 "덧셈할 문자열을 입력해 주세요."의 형식을 따른다.
기능 2. 유효한 입력값인지 확인한다.

기본 구분자(쉼표 혹은 콜론)로 구분되는 경우인지 사용자의 커스텀 구분자로 구분되는 경우인지 구분한다.
구분자에 대한 판단과 함께 구분되어진 값들이 양의 정수인지 확인한다.
유효하지 않은 입력값이라면 IllegalArgumentException을 throw하고 프로그램을 종료한다.
기능 3. 구분자로 나뉘어있는 양수를 모두 더한다.

기능 4. 구한 총합을 출력한다.

출력 형식은 "결과 : [값]"의 형식을 따른다.
51 changes: 50 additions & 1 deletion src/main/java/calculator/Application.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,56 @@
package calculator;

import camp.nextstep.edu.missionutils.Console;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.Arrays;


public class Application {

public static void main(String[] args) {
// TODO: 프로그램 구현
// 총합 int 변수 선언
int sum = 0;

// Regex로 활용할 String 선언
String regexDefault = "^[1-9]\\d*([,:]+[1-9]\\d*)*$";
String regexCustom = "^\\/\\/.+\\\\n[1-9]\\d*(.+[1-9]\\d*)*$";

// 인풋 입력받기
System.out.println("덧셈할 문자열을 입력해 주세요.");
String input = Console.readLine();

// 유효한 입력값인지 확인
// 첫번째 if문은 더하려는 수가 양의 정수이고 쉼표 또는 콜론을 구분자로 가지는 경우
// 두번째 if문은 더하려는 수가 양의 정수이고 커스텀 구분자를 가지는 경우
// 마지막 else는 잘못된 입력값이 입력된 경우
if (Pattern.matches(regexDefault, input)) {
String[] nums = input.split(",|:");

for (String num : nums) {
sum += Integer.parseInt(num);
}

} else if (Pattern.matches(regexCustom, input)) {
String regexDelimiter = "^\\/\\/(.*?)\\\\n(.*)$";
Pattern.matches(regexDelimiter, input);
Pattern pattern = Pattern.compile(regexDelimiter);
Matcher matcher = pattern.matcher(input);

if (matcher.find()) {
String customDelimiter = matcher.group(1);
String searchText = matcher.group(2);
String[] nums = searchText.split(customDelimiter);

for (String num : nums) {
sum += Integer.parseInt(num);
}
}
} else {
throw new IllegalArgumentException("Invalid Input.");
}

// 결과 출력
System.out.println("결과 : " + sum);
}
}