diff --git a/src/test/java/study/StringCalculator.java b/src/test/java/study/StringCalculator.java new file mode 100644 index 000000000..ce7d4a2b0 --- /dev/null +++ b/src/test/java/study/StringCalculator.java @@ -0,0 +1,73 @@ +package study; + +import java.util.Scanner; +import java.util.StringTokenizer; + +public class StringCalculator { + + /** 에러 1 . 계산식이 토큰으로 뽑히지 않음 + * 해결 . StringTokenizer stringTokenizer = new StringTokenizer() 3번째 인자에 true 추가 + * 3번째 인자는 구분자로 토큰을 분리할 때 구분자도 토큰에 포함시킬지 여부 default값은 false + * **/ + + public static void main(String[] args){ + String token = ""; + int amount = 0; + + Scanner sc = new Scanner(System.in); + + System.out.println("계산식 입력 : "); + + String inputData = sc.nextLine(); + StringTokenizer stringTokenizer = new StringTokenizer(inputData, "+-*/", true); + + try { + while (stringTokenizer.hasMoreTokens()){ + + token = stringTokenizer.nextToken(); + + if (token.equals("+")){ + + token = stringTokenizer.nextToken(); + amount += Integer.parseInt(token); + + + } else if (token.equals("-")) { + + token = stringTokenizer.nextToken(); + amount -= Integer.parseInt(token); + + } else if (token.equals("*")) { + + token = stringTokenizer.nextToken(); + amount *= Integer.parseInt(token); + + } else if (token.equals("/")) { + + token = stringTokenizer.nextToken(); + amount /= Integer.parseInt(token); + + } else { + amount = Integer.parseInt(token); + } + + } + System.out.println("결과값 : " + amount); + + } catch (NullPointerException e){ + + } + + + } + + public String _StringCalculator() { + + Scanner scanner = new Scanner(System.in); + + String scanInput = scanner.nextLine(); + + + return null; + } +} diff --git a/src/test/java/study/StringTest.java b/src/test/java/study/StringTest.java index 43e47d90b..2b4db4c3b 100644 --- a/src/test/java/study/StringTest.java +++ b/src/test/java/study/StringTest.java @@ -1,13 +1,99 @@ package study; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.ValueSource; + +import java.util.HashSet; +import java.util.Set; import static org.assertj.core.api.Assertions.assertThat; public class StringTest { + private Set numbers; + @Test void replace() { String actual = "abc".replace("b", "d"); assertThat(actual).isEqualTo("adc"); } + + @Test + void test1A() { + String actual = "1,2"; + String[] actual1 = actual.split(","); + + assertThat(actual1[0]).contains("1"); + + } + + @Test + void test1B() { + String actual = "1"; + String[] actual1 = actual.split(","); + + assertThat(actual1).containsExactly("1"); + } + + @Test + void test2() { + String actual = "(1,2)"; + String actual1 = actual.substring(1,4); + + assertThat(actual1).isEqualTo("1,2"); + } + + @Test + void test3() { + String actual = "abc"; + char a = actual.charAt(1); + + assertThat(a).isEqualTo('b'); + } + + @Test + @BeforeEach + void test4A() { + + numbers = new HashSet<>(); + numbers.add(1); + numbers.add(1); + numbers.add(2); + numbers.add(3); + + assertThat(numbers.size()).isEqualTo(3); + } + + @ParameterizedTest + @ValueSource(ints = {1,2,3}) + void test4B(int number) { + + numbers = new HashSet<>(); + numbers.add(1); + numbers.add(1); + numbers.add(2); + numbers.add(3); + +// assertThat(numbers.contains(1)).isTrue(); +// assertThat(numbers.contains(2)).isTrue(); +// assertThat(numbers.contains(3)).isTrue(); + + assertThat(numbers.contains(number)).isTrue(); + } + + // TODO +// @ParameterizedTest +// @CsvSource(value = {"7", "4", "5"}) +// void test4C(int number) { +// +// numbers = new HashSet<>(); +// numbers.add(1); +// numbers.add(1); +// numbers.add(2); +// numbers.add(3); +// +// asser +// } }