# 사용 목적 : 코드의 Input / Output을 알고 로직이 정상적으로 구현 되었는지는 파악하기 위함으로 사용하였다. 수업 간에 배우는 메서드의 경우에는 내용이 단순하여 불필요한 작업으로 보일 지 모르지만 복잡한 메서드를 활용하게 되면 더 효용 가치가 높아진다.
# 가능한 여러 TEST CASE를 구현하는 것이 중요하다.
# 예시
package Day6;
import static org.junit.Assert.*;
import org.junit.Test;
public class CheckMethod {
//Test Driven Development(TDD) 테스트 주도 개발
// 1번 문제 ------------------------------
@Test
public void test1_1() {
assertTrue(mid(1,2,3)==2);
}
@Test
public void test1_2() {
assertTrue(mid(2,2,2)==2);
}
@Test
public void test1_3() {
assertTrue(mid(1,2,1)==2);
}
@Test
public void test1_4() {
assertTrue(mid(1,6,8)==6);
}
@Test
public void test1_5() {
assertTrue(mid(9,3,6)==6);
}
@Test
public void test1_6() {
assertTrue(mid(7,4,5)==5);
}
// 2번 문제 ------------------------------
@Test
public void test2_1() {
assertTrue(SumDigit(123)==6);
}
@Test
public void test2_2() {
assertTrue(SumDigit(12345)==15);
}
@Test
public void test2_3() {
assertTrue(SumDigit(777)==21);
}
@Test
public void test2_4() {
assertTrue(SumDigit(987)==24);
}
@Test
public void test2_5() {
assertTrue(SumDigit(1111111)==7);
}
// 3번 문제 ------------------------------
@Test
public void test3_1() {
assertTrue(palinromCheck(12345)==false);
}
@Test
public void test3_2() {
assertTrue(palinromCheck(1441)==true);
}
@Test
public void test3_3() {
assertTrue(palinromCheck(12788721)==true);
}
@Test
public void test3_4() {
assertTrue(palinromCheck(1112456654)==false);
}
@Test
public void test3_5() {
assertTrue(palinromCheck(111121)==false);
}
int mid(int x,int y, int z){
// 중간값인지를 if문으로 확인 x<=y<=z 성립이면 mid에 중간값을 담는다.
if((y<=x && x<=z)||(z<=x && x<=y)){
return x;
}else if((x<=y && y<=z)||(z<=y && y<=x)){
return y;
}
return z;
}
int SumDigit(int x){
int result = 0;
while(x>0){
result += x%10; // 1의 자리값을 result에 더함.
x = x/10; // 10으로 나누어 12345 -> 1234 와 같이 만듬.
}
return result;
}
boolean palinromCheck(int x){
boolean result = true;
/*
String xString = x+""; // 길이함수와 charAt 함수를 쓰기위한 형변환
int length = xString.length();
// 맨 앞과 뒤를 하나씩 비교하여 가운데까지 비교. 홀수의 경우 정가운데 숫자는 비교할 필요가 없음.
for(int i = 0; i<length/2;i++){
if(xString.charAt(i) != xString.charAt(length-i-1)){
result = false;
break;
}
}
*/
int length = 0;
int x1=x;
while(x1>0){
length++;
x1=x1/10;
}
for(int i = 1 ; i <= length; i+=2){
if(x%10!=x/(int)Math.pow(10, length-i)){
result = false;
break;
}
x = (x%(int)Math.pow(10, length-i))/10;
System.out.println(x);
}
return result;
}
static int unique3(){
int result = 0;
int[] num = new int[3]; // 중복되지 않은 값을 담기위해 배열을 생성
for (int i=0; i<num.length;i++){
num[i]=(int)(Math.random()*9+1);
for(int j = 0; j < i; j++){
if(num[i]==num[j]){ // 중복되는 값이 있을시 i-- 를 해줌으로서 다시 랜덤값을 받을 수 있게 함.
i--;
break;
}
}
}
result = 100*num[0] + 10* num[1]+num[2];
return result;
}
}
'Java' 카테고리의 다른 글
| [객체지향언어2] 상속이란? (0) | 2018.03.12 |
|---|---|
| [객체지향언어] 생성자(constructor)와 변수의 초기화 (0) | 2018.03.12 |
| [객체지향언어] 야구게임(메서드 활용) (0) | 2018.03.12 |
| [객체지향언어] 클래스와 메서드 특징 및 이해 (0) | 2018.03.12 |
| [객체지향개념] 요약정리노트2 (0) | 2018.03.04 |