오늘 인준이 만나서 도움 받고 수정해서 올렸는데, 아무리 봐도 뭔가 좀 부족한 것 같다... 뭔가... 뭔가 더 간결하게 할 수 있을 것 같은데 생각이 안 나.
⬇️ SOLID도 보고 객체지향 생활 체조 원칙 어쩌구도 보았으나 그래도 더러운 내 코드 자랑.
public class Main {
public static void main(String[] args) {
//조금 더러운 것 같음
InputStrSplit input = new InputStrSplit();
OpsNumSplit opsNumSplit = new OpsNumSplit();
String[] str = input.strSplit();
opsNumSplit.opsNumSplit(str);
List<String> opsList = opsNumSplit.getOpsList();
List<Integer> numList = opsNumSplit.getNumList();
System.out.println(Output.output(numList, opsList));
}
}
public class Input {
public static String input() {
System.out.print("입력값: ");
return new Scanner(System.in).nextLine();
}
}
public class InputStrSplit {
String str = Input.input();
public String[] strSplit() {
String[] strArr = str.split(" ");
return strArr;
}
}
public class OpsNumSplit {
List<String> opsList;
List<Integer> numList;
public void opsNumSplit(String[] strArr) {
opsList = new ArrayList<>();
numList = new ArrayList<>();
for(int i = 0; i < strArr.length; i++) {
if (i % 2 == 0) {
validateNums(strArr[i]);
}
else {
validateOps(strArr[i]);
}
}
}
public void validateNums(String str) {
if(str.matches("^[0-9]*$")) {
numList.add(Integer.parseInt(str));
}
else {
throw new RuntimeException("숫자가 아닙니다.");
}
}
public void validateOps(String str) {
if(str.matches("[-+*/]")) {
opsList.add(str);
}
else {
throw new RuntimeException("부호가 아닙니다.");
}
}
public List<String> getOpsList(){
return opsList;
}
public List<Integer> getNumList(){
return numList;
}
}
public class Calculator {
//여기서 어떻게 더 나눠야 할지 모르겠음
public static int calculate(List<Integer> nums, List<String> ops) {
int sum = nums.get(0);
for(int i = 0; i < ops.size(); i++) {
switch (ops.get(i)) {
case "+" -> sum += nums.get(i+1);
case "-" -> sum -= nums.get(i+1);
case "*" -> sum *= nums.get(i+1);
case "/" -> sum /= nums.get(i+1);
}
}
return sum;
}
}
public class Output {
public static String output(List<Integer> numList, List<String> opsList) {
return "결과값: " + Calculator.calculate(numList, opsList);
}
}
코드를 봤을 때 주석이 없어도 최대한 알아볼 수 있도록 직관적이고 간결하게 짜보려 했으나 아직은 실력이 많이 부족한 것 같다.
남이 보면 이 시끼 이게 뭐꼬? 뭘 짠 기고? 싶을 정도로...ㅎ;
근데 함정은 이게 두 번이나 피드백 받은 코드란 거다.
이게 바로 뇌가 토끼정 크림카레우동(맛있어요)사리인 빡머가리의 숙명인가? 그치만 어쨌든... 조금씩 나아지고 있는 것 같긴 하다... 아마도지만...
+) 22. 06. 26. 정리 완료.
day13 🌕 에 올려놨습니다.
이거 제 역작이라 표현할 정도로... 잘 정리해놓은 것 같습니다. 물론 제가 봤을 때요.
+) 22. 06. 26. 기준 현재 알아보는 중... 이건... 책에 안 나와있어서 빡시다.
이것저것 그동안 못 채워넣었던 거 쫌쫌따리 채워넣는 중.