이건 조건이 많아보이지만 위 틀을 잡고 연산에만 집중하면 금방 풀 수 있다. 쳐다보는 것 보다 직접 메서드에 하나씩 옮기면서 남은 부분을 처리하는게 훨씬 머릿속으로 잘 그려졌다.
1. Main.java
package Algorithm04;
public class Main {
public static void main(String[] args) {
System.out.println("각에서 0도 초과 90도 미만은 예각,\n" +
" 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다.\n" +
" 각 angle이 매개변수로 주어질 때 \n" +
"예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를\n" +
"return하도록 solution 함수를 완성해주세요.\n" +
"\n" +
"예각 : 0 < angle < 90\n" +
"직각 : angle = 90\n" +
"둔각 : 90 < angle < 180\n" +
"평각 : angle = 180\n" +
"제한사항\n" +
"0 < angle ≤ 180\n" +
"angle은 정수입니다.\n");
Solution solution = new Solution();
solution.intputAngle();
}
}
Java
복사
2. Solution.java
package Algorithm04;
import java.util.Scanner;
public class Solution {
//필요데이터//angleInputNum <-input 스캐너, int형, 0<angle<=180 제한사항 유효성체크 while,// angleStr <- 예각, 직각, 둔각, 평각 표현// angleOutputNum <-output//필요메서드//inputAngle()//calculate()//outputAngle()int angleInputNum;
String angleStr;
int angleOutputNum;
Scanner sc = new Scanner(System.in);
public Solution() {
}
void intputAngle() {
while (true) {
System.out.println("각도를 입력해주세요.");
angleInputNum = sc.nextInt();
if (angleInputNum < 0 || angleInputNum > 180) {
System.out.println("각도는 0~180도까지만 입력해주세요.");
continue;
} else {
calculate(angleInputNum);
break;
}
}
}
void calculate(int angleInputNum) {
if (angleInputNum > 0 && angleInputNum < 90) {
angleStr = "예각";
angleOutputNum = 1;
outputAngle(angleStr, angleOutputNum);
} else if (angleInputNum == 90) {
angleStr = "직각";
angleOutputNum = 2;
outputAngle(angleStr, angleOutputNum);
} else if (angleInputNum > 90 && angleInputNum < 180) {
angleStr = "둔각";
angleOutputNum = 3;
outputAngle(angleStr, angleOutputNum);
} else if (angleInputNum == 180) {
angleStr = "평각";
angleOutputNum = 4;
outputAngle(angleStr, angleOutputNum);
} else {
System.out.println("잘못된 접근 입니다.");
}
}
void outputAngle(String angleStr, int angleOutputNum) {
System.out.printf("입력하신 값은 %s이며 표현값은 '%d' 입니다.", angleStr, angleOutputNum);
}
}
Java
복사