오늘 진행한 학습 요약
1. [CH 2 프로그래밍 기초 개인 과제] Java로 계산기 만들기
- 클래스를 활용하지 않는 계산기
- 주요 코드 작성 내용
- 트러블 슈팅
학습 정리
- 클래스를 활용하지 않는 계산기
- 클래스를 활용하지 않는 계산기로 Java의 기본 문법으로 작성하였다.
- Scanner로 계산할 값과 사칙연산을 받아올 수 있도록 작성했다.
- System.out.prinit로 사용자에게 때에 맞는 문장이 출력되도록 설정하였다.
- 첫 if문으로 양의 정수(firstNum0 >= 0 && secondNum0 >= 0)를 만족하면 계산하고
아니면 계산되지 않도록 하였다. - 첫 if문으로 두번째 if문으로 사칙연산을 계산하도록 하였다.
- 반복문으로 계산을 계속 시행할 수있도록 while문을 사용한 계산기를 하단에 추가하였다. Test를 위해 case로 반복문인 것과 반복문이 아닌것을 선택할 수 있도록 하였다.
- while문을 사용한 계산이 끝나면 Sout으로 계산을 더할지 물어보고 exit가 입력되는 경우 break로 종료
이외의 단어는 계산이 계속되게 작성하였다.
- Git-hub에 day1로 브랜치를 생성하여 추가 내용을 작성하였다.
- 클래스를 활용하지 않는 계산기로 Java의 기본 문법으로 작성하였다.
- 주요 코드 작성내용
package NoClassCalculrator;
import java.util.Scanner;
public class App {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("==========noClass 사칙연산 계산기==========");
System.out.print("원하는 조건문을 선택하세요(if, while) : ");
String option = scanner.nextLine();
switch (option) {
// 1. IF문으로 조건을 만족할 경우 계산하도록 작성
case "if":
// 첫번째 계산할 숫자 입력
System.out.print("첫번째 숫자를 입력하세요 : ");
int firstNum0 = scanner.nextInt();
// 두번째 계산할 숫자 입력
System.out.print("두번째 숫자를 입력하세요 : ");
int secondNum0 = scanner.nextInt();
// 계산에 사용할 사칙연산 기호 입력
System.out.print("원하는 사칙연산 기호를 입력하세요(+, -, *, /) : ");
char operator0 = scanner.next().charAt(0);
if (firstNum0 >= 0 && secondNum0 >= 0) {
if (operator0 == '+') {
System.out.println("결과 : " + (firstNum0 + secondNum0));
} else if (operator0 == '-') {
System.out.println("결과 : " + (firstNum0 - secondNum0));
} else if (operator0 == '*') {
System.out.println("결과 : " + (firstNum0 * secondNum0));
} else if (operator0 == '/') {
System.out.println("결과 : " + (firstNum0 / secondNum0));
} else {
System.out.println("사칙연산 값을 잘못 입력하셨습니다.");
}
} else { // 양의 정수를 입력하지 않을 경우 알림
if (firstNum0 < 0 && secondNum0 < 0) {
System.out.println("양의 정수를 입력하세요.");
} else if (firstNum0 < 0) {
System.out.println("첫번째 자리에 양의 정수를 입력하세요.");
} else {
System.out.println("두번째 자리에 양의 정수를 입력하세요.");
}
}
break;
// 2. while문으로 특정 조건을 만족하기 전까지 연산을 반복하도록 작성
case "while":
while (true) {
System.out.print("첫번째 숫자를 입력하세요 : ");
int firstNum1 = scanner.nextInt();
// 두번째 계산할 숫자 입력
System.out.print("두번째 숫자를 입력하세요 : ");
int secondNum1 = scanner.nextInt();
// 계산에 사용할 사칙연산 기호 입력
System.out.print("원하는 사칙연산 기호를 입력하세요(+, -, *, /) : ");
char operator1 = scanner.next().charAt(0);
scanner.nextLine();
if (firstNum1 >= 0 && secondNum1 >= 0) {
if (operator1 == '+') {
System.out.println("결과 : " + (firstNum1 + secondNum1));
} else if (operator1 == '-') {
System.out.println("결과 : " + (firstNum1 - secondNum1));
} else if (operator1 == '*') {
System.out.println("결과 : " + (firstNum1 * secondNum1));
} else if (operator1 == '/') {
System.out.println("결과 : " + (firstNum1 / secondNum1));
} else {
System.out.println("사칙연산 값을 잘못 입력하셨습니다.");
}
} else { // 양의 정수를 입력하지 않을 경우 알림
if (firstNum1 < 0 && secondNum1 < 0) {
System.out.println("양의 정수를 입력하세요.");
} else if (firstNum1 < 0) {
System.out.println("첫번째 자리에 양의 정수를 입력하세요.");
} else {
System.out.println("두번째 자리에 양의 정수를 입력하세요.");
}
}
System.out.println("더 계산을 원하시면 아무키나 눌러주세요 (exit 입력 시 종료)");
String answer = scanner.nextLine();
if (answer.equals("exit")) {
break;
} else {
System.out.println("=============================");
}
}
}
}
}
트러블 슈팅
- 문제
- Test를 위해 Case를 사용하면서 상단에 input과 output의 내용을 적어논것이 while로 반복문을 사용할때 사용되지 못하였다.
- 해결 방안
- 계산 값 입출력 구현부분을 각 case 안에서 구현이 되도록 작성하였다.
- 의문점
- Case문을 사용하니 동일한 코드의 반복사용이 많았다.
- 동일한 코드를 재작성하지 않고 변수로 사용할 수는 없는지 고민하게 되었다.
- Class를 사용하면 코드의 반복사용을 줄일 수 있을 것 같다.