Skip to content

study #122

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open

study #122

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
3 changes: 2 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ apply plugin: 'eclipse'

group = 'camp.nextstep'
version = '1.0.0'
sourceCompatibility = '1.8'
sourceCompatibility = "1.9"

repositories {
mavenCentral()
Expand All @@ -17,3 +17,4 @@ dependencies {
test {
useJUnitPlatform()
}
targetCompatibility = JavaVersion.VERSION_1_9
60 changes: 60 additions & 0 deletions src/main/java/Calculator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import java.util.Scanner;

public class Calculator {
public int calculator(String value) {
String[] values = isBlank(value);
int result = stringToInt(values[0]);
for (int i = 1; i < values.length; i += 2) {
result = calc(values[i],result,stringToInt(values[i+1]));
}
return result;
}
public int calc(String value, int result, int nextNumber) {
switch(value){
case "+" :
return sum(result, nextNumber);
case "-" :
return sub(result, nextNumber);
case "/" :
return divide(result, nextNumber);
case "*" :
return multiply(result, nextNumber);
default:
return -1;
}


}

public String[] isBlank(String value) {
if (value == null || value.isEmpty()) {
throw new IllegalArgumentException("입력값을 확인해 주세요");
}
return value.split(" ");
}

public int stringToInt(String value) {
return Integer.parseInt(value);
}

public int sum(int a, int b) {
return a + b;
}

public int sub(int a, int b) {
return a - b;
}

public int divide(int a, int b) {
try {
return a / b;
} catch (Exception e) {
System.out.println("0으로 나눌 수 없습니다.");
return 0;
}
}

public int multiply(int a, int b) {
return a * b;
}
}
6 changes: 6 additions & 0 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
public class Main {
public static void main(String[] args) {
Calculator calculator = new Calculator();
int result = calculator.calculator("2 + 3 * 4 / 2");
}
}
43 changes: 43 additions & 0 deletions src/main/java/baseball/BaseballGame.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package baseball;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class BaseballGame {

public void startGame() {
System.out.println("게임을 시작합니다.");
CreateNumber createNumber = new CreateNumber();
CheckNumber checkNumber = new CheckNumber();
List<Integer> computerNumberList;
int result = 0;
computerNumberList = createNumber.makeRandomNumbers();
while(result != 30){
String inputNumber = checkNumber.inputNumber();
int[] userNumberArray = checkNumber.splitNumber(inputNumber);
result = checkNumber.checkNumber(computerNumberList,userNumberArray);
System.out.println(result%10 + "볼" + result/10 + "스트라이크");
}
}

public void endGame(){
System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료");
}

public void reGame(){
System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요.");
Scanner scanner = new Scanner(System.in);
int input = scanner.nextInt();
if(input == 1){
startGame();
}
if(input == 2){
endGame();
}
}




}
9 changes: 9 additions & 0 deletions src/main/java/baseball/BaseballMain.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package baseball;

public class BaseballMain {
public static void main(String[] args) {
BaseballGame baseballGame = new BaseballGame();
baseballGame.startGame();
baseballGame.reGame();
}
}
52 changes: 52 additions & 0 deletions src/main/java/baseball/CheckNumber.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package baseball;

import java.util.List;
import java.util.Scanner;

public class CheckNumber {
public int checkNumber(List<Integer> computerNumberList, int[] userNumber) {
int result = 0;
for(int i=0;i<userNumber.length;i++){
result += isCorrect(computerNumberList,userNumber[i],i);
}
return result;
}
public int isCorrect(List<Integer> computerNumberList,int userNumber,int index) {
if(!computerNumberList.contains(userNumber)){
return 0;
}
if(computerNumberList.indexOf(userNumber) == index) {
return 10;
}
if(computerNumberList.indexOf(userNumber) != index) {
return 1;
}
return 0;
}

public String inputNumber(){
System.out.println("세자리 숫자를 입력해주세요 : ");
Scanner scanner = new Scanner(System.in);
int input = 0;
try {
input = scanner.nextInt();
}catch (Exception e){
System.out.println("문자열 말고 숫자만 입력 가능합니다.");
return inputNumber();
}
if(input < 100 || input > 999){
System.out.println("3자리 숫자만 입력 가능합니다. ");
return inputNumber();
}
return String.valueOf(input);
}

public int[] splitNumber(String userNumber){
int[] numberArray = new int[3];
for(int i=0;i<3;i++){
numberArray[i] = Integer.parseInt(String.valueOf(userNumber.charAt(i)));
}
return numberArray;
}

}
26 changes: 26 additions & 0 deletions src/main/java/baseball/CreateNumber.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package baseball;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class CreateNumber {

public int createRandomNumber(List<Integer> numberList) {
Random random = new Random();
int randomNumber = random.nextInt(9)+1;
if(numberList.contains(randomNumber)){
return createRandomNumber(numberList);
}
return randomNumber;
}

public List<Integer> makeRandomNumbers() {
List<Integer> numberList = new ArrayList<>();
for (int i = 0; i < 3; i++) {
int a = createRandomNumber(numberList);
numberList.add(a);
}
return numberList;
}
}
49 changes: 49 additions & 0 deletions src/test/java/baseball/CheckNumberTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package baseball;

import org.junit.jupiter.api.Test;

import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;

class CheckNumberTest {
CheckNumber checkNumber = new CheckNumber();
@Test
void checkAllStrike() {
List<Integer> computerNumberList = List.of(1,2,3);
int[] userNumber = {1,2,3};
int result = checkNumber.checkNumber(computerNumberList,userNumber);
assertThat(result).isEqualTo(30);
}
@Test
void checkAllNothing(){
List<Integer> computerNumberList = List.of(1,2,3);
int[] userNumber = {4,5,6};
int result = checkNumber.checkNumber(computerNumberList,userNumber);
assertThat(result).isEqualTo(0);
}
@Test
void checkAllBall(){
List<Integer> computerNumberList = List.of(1,2,3);
int[] userNumber = {2,3,1};
int result = checkNumber.checkNumber(computerNumberList,userNumber);
assertThat(result).isEqualTo(3);
}

@Test
void isCorrect() {
List<Integer> computerNumberList = List.of(1,2,3);
int result = checkNumber.isCorrect(computerNumberList,1,0);
assertThat(result).isEqualTo(10);
}

@Test
void isNotCorrect() {
List<Integer> computerNumberList = List.of(1,2,3);
int result = checkNumber.isCorrect(computerNumberList,4,0);
assertThat(result).isEqualTo(0);
}



}
18 changes: 18 additions & 0 deletions src/test/java/baseball/CreateNumberTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package baseball;

import org.junit.jupiter.api.Test;

import java.util.List;

import static org.junit.jupiter.api.Assertions.*;

class CreateNumberTest {

@Test
void createNumber() {
CreateNumber createNumber = new CreateNumber();
List<Integer> numberList = createNumber.makeRandomNumbers();
assertEquals(3, numberList.size());
}

}
39 changes: 39 additions & 0 deletions src/test/java/study/SetTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
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.ValueSource;

import java.util.HashSet;
import java.util.Set;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class SetTest {
private Set<Integer> numbers;

@BeforeEach
void setUp() {
numbers = new HashSet<>();
numbers.add(1);
numbers.add(1);
numbers.add(2);
numbers.add(3);
}

@Test
void checkSize() {
assertThat(numbers.size()).isEqualTo(3);
}

@Test
void contain() {
assertThat(numbers.contains(1)).isTrue();
assertThat(numbers.contains(2)).isTrue();
assertThat(numbers.contains(3)).isTrue();
}


}
34 changes: 34 additions & 0 deletions src/test/java/study/StringTest.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,47 @@
package study;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;

public class StringTest {
@Test
void replace() {
String actual = "abc".replace("b", "d");
assertThat(actual).isEqualTo("adc");
}
@Test
void first() {
String[] firstTest = "1".split(",");
assertThat(firstTest).contains("1");
String[] secondTest = "1,2".split(",");
assertThat(secondTest).containsExactly("1","2");
}
@Test
void second() {
String firstTest = "(1,2)".replace("(","").replace(")","");
assertThat(firstTest).isEqualTo("1,2");
}
@Test
@DisplayName("String 에서 charAt을 이용하여 특정 위치의 문자열을 가져오고 예외처리를 한다.")
void third(){
String str = "abc";
str.charAt(0);
str.charAt(1);
str.charAt(2);

assertThatExceptionOfType(IndexOutOfBoundsException.class).isThrownBy(() -> {
str.charAt(3);
}).withMessageMatching("Index : \\d+, Size : \\d+");
assertThat(str.charAt(0)).isEqualTo('a');
assertThat(str.charAt(1)).isEqualTo('b');
assertThat(str.charAt(2)).isEqualTo('c');

}




}