Skip to content
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

Leejungbum 코드리뷰 요청합니다. #5

Merged
merged 14 commits into from
Oct 2, 2023
8 changes: 7 additions & 1 deletion src/main/java/org/nhnacademy/App.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.nhnacademy;

import org.nhnacademy.jungbum.*;

/**
* Hello world!
*
Expand All @@ -8,6 +10,10 @@ public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
// new Quiz1();
// new Quiz2();
new Quiz3();
// new Quiz4();
// new Quiz6();
}
}
78 changes: 78 additions & 0 deletions src/main/java/org/nhnacademy/jungbum/Quiz1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package org.nhnacademy.jungbum;


import java.util.Map;
import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.TreeMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/***
* 전화번호부 treemap으로 구현
*/
public class Quiz1 {

private static final Logger logger = LoggerFactory.getLogger(Quiz1.class);

public static void main(String[] args) {
PhoneDirectory phoneBook = new PhoneDirectory();
logger.info("전화번호부에 추가할 사람을 이름 전화번호 순으로 입력해주세요.(만약 끝내고싶다면 빈칸을 입력해주세요)");
try {
phoneBook.addNumber();
} catch (IllegalArgumentException e) {
logger.warn(e.toString());
}
logger.info("전화번호부에 등록된 모든사람을 조회합니다.");
phoneBook.print();
}

}

/***
* 전화번호부
*/
class PhoneDirectory {
private static Scanner scanner = new Scanner(System.in);

private TreeMap<String, String> PhoneEntry;

public PhoneDirectory() {
PhoneEntry = new TreeMap<String, String>();
}

// public String getNumber( String name ) {
// return PhoneEntry.get(name);
// }


/***
* 전화번호 추가
* @throws IllegalArgumentException 이름이나 번호가 없는경우
*/
public void addNumber() throws IllegalArgumentException {
String value;
StringTokenizer stringTokenizer;
while (!(value = scanner.nextLine()).equals("")) {
JBumLee marked this conversation as resolved.
Show resolved Hide resolved
stringTokenizer = new StringTokenizer(value);
String name = stringTokenizer.nextToken();
String number = stringTokenizer.nextToken();
if (name == null)
throw new IllegalArgumentException("이름이 비어 등록이 불가능합니다.");
if (number == null)
throw new IllegalArgumentException("번호가 비어 등록이 불가능합니다.");
PhoneEntry.put(name, number);

}
}


/***
* 모든사람 출력
*/
public void print() {
for (Map.Entry<String, String> entry : PhoneEntry.entrySet())
System.out.println(entry.getKey() + ": " + entry.getValue());
JBumLee marked this conversation as resolved.
Show resolved Hide resolved
}

}
140 changes: 140 additions & 0 deletions src/main/java/org/nhnacademy/jungbum/Quiz2.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
package org.nhnacademy.jungbum;

import java.util.Scanner;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/***
* 집합 - 합집합, 교집합, 차집합 만들기
*/
public class Quiz2 {

public Quiz2() {
new Calc();
}
}

/***
* 집합 계산기
*/
class Calc {

private CustomSet a;
private CustomSet b;
private String op;
private final Scanner scanner = new Scanner(System.in);
private Logger logger = LoggerFactory.getLogger(Quiz2.class);

/***
* 글자제외하고 추가
*/
public Calc() {
String line;
while (!(line = scanner.nextLine()).equals("")) {
logger.info(line);
a = new CustomSet();
b = new CustomSet();
int count = 0;
StringTokenizer stringTokenizer = new StringTokenizer(line);
while (stringTokenizer.hasMoreTokens()) {
JBumLee marked this conversation as resolved.
Show resolved Hide resolved
String numString = stringTokenizer.nextToken();
System.out.println(numString);
if (numString.equals("[") || numString.equals("]")) {
count++;
continue;
}
if (numString.equals("+") || numString.equals("-") || numString.equals("*")) {
op = numString;
continue;
}
try {
int num = Integer.parseInt(numString.split(",")[0]);
numCheck(num);
if (count == 1 || count == 2) {
System.out.println("1 "+num);
a.getSet().add(num);
} else {
System.out.println("2 "+num);

b.getSet().add(num);
}
} catch (IllegalArgumentException e) {
logger.warn(e.toString());
}
}
logger.info("{}",a.getSet());
logger.info("{}",b.getSet());
switch (op) {
case "+":
a.addAll(b);
logger.info("{}", a.getSet());
break;
case "-":
a.removeAll(b);
logger.info("{}", a.getSet());
break;
case "*":
a.retrainAll(b);
logger.info("{}", a.getSet());
break;
}
}
}

/***
* 숫자가 아닐때 예외처리
* @param num 숫자후보
* @throws IllegalArgumentException 숫자가아닐때
*/
public void numCheck(int num) throws IllegalArgumentException {
if (num == -1 || num == -2)
throw new IllegalArgumentException("숫자가 아닌 값이 있습니다.");
}
}

/***
* 사용자 정의 커스텀 셋
*/
class CustomSet {
private TreeSet<Integer> set;

public CustomSet() {
set = new TreeSet<>();
}

/***
* 합집합
* @param set 집합
*/
public void addAll(CustomSet set) {
getSet().addAll(set.getSet());
}

/***
* 교집합
* @param set 집합
*/
public void retrainAll(CustomSet set) {
getSet().retainAll(set.getSet());
}

/***
* 차집합
* @param set 집합
*/
public void removeAll(CustomSet set) {
getSet().removeAll(set.getSet());
}

/***
* 집합 읽기
* @return 집합값
*/
public Set<Integer> getSet() {
return set;
}

}
Loading