본문 바로가기
IT 돌고래/JAVA

[JAVA]자바의 아홉걸음 : 조건문과 반복문응용

by IT돌고래 2020. 2. 4.
반응형

안녕하세요.

IT 돌고래입니다.

자바의 조건문과 반복문이 응용에 대해서 이야기를 해보겠습니다.

 

어떤 프로그램을 만들더라도 필수적으로 해야만 하는 것이 자바의 일곱걸음에서 배운 조건문과 자바의 여덜걸음에서 배운 반복문입니다. 조건문과 반복문을 쓰는 방법은 간단합니다. 하지만 제가 이전부터 강조드린 어떤 프로그램을 만들려면 조건문과 반복문을 어떻게 만들어야 올바르고 개발자가 원하는 프로그램이 구현을 할 수 있을까? 이 부분이 가장 어려운 부분입니다. 어떤 순서와 조합으로 조건문과 반복문을 써야 하는지를 처음 하시는분들은 끈임없이 생각을 하셔야 합니다. 사람의 사고로만 계속 살아오셨기 따문에 컴퓨터 사고로 생각하는 것은 쉽지 않지만 프로그램 개발자를 하시려면 고민과 생각은 필수입니다.

 

1. 응용소스

   ㄱ. 구구단 프로그램 구현

 

 

위에 처럼 출력이 되도록 프로그램을 구현을 해보세요.

정답소스는 아래를 확인해보세요.

더보기
int i=1;     //변수 i를 선언 후 1로 값을 초기화
for(int x = 2;x<=5;x++)
// 변수 x를 선언 후 2로 값을 초기화 하고 변수 x가 5작거나 같으면 반복 한번 반복때마다 x는 1씩증가함
{
   System.out.print("*** "+ x + "단***	"); // 출력 x변수가 들어가서 예)2단, 3단,....
}
System.out.println(); // 개행출력
while(i<=9) // i가 9보다 작거나 같으면 반복
{			
   for(int j = 2;j<=5;j++) 
   // 변수 j를 선언 후 2로 값을 초기화 하고 변수 j가 5보다 작거나 같으면 반복 한번 반복때마다 j는 1씩증가함
   {
      System.out.print(j+"*"+i+"="+i*j+"\t\t"); //구구단을 출력 예)2*1 =2, 2*2 = 4...
   }
   System.out.println(); //개행 출력
   i++; //변수 i 값을 1씩 증가
}
System.out.println(); //개행 출력
System.out.println(); // 개항 출력
i = 1; //i변수에 1를 대입
for(int x = 6;x<10;x++)
// 변수 x를 선언 후 6로 값을 초기화 하고 변수 x가 10작으면 반복 한번 반복때마다 x는 1씩증가함
{
   System.out.print("*** "+ x + "단***	"); // 출력 x변수가 들어가서 예)6단, 7단,....
}
System.out.println(); //개행출력
while(i<=9)  // i가 9보다 작거나 같으면 반복

{			
   for(int j = 6;j<=9;j++)
   // 변수 j를 선언 후 6로 값을 초기화 하고 변수 j가 9보다 작거나 같으면 반복 한번 반복때마다 j는 1씩증가함
   {
      System.out.print(j+"*"+i+"="+i*j+"\t\t");//구구단을 출력 예)6*1 =6, 6*2 = 12...
   }
   System.out.println(); //개행출력
   i++; // i변수 1씩 증가
}

 

위에 소스를 보면 콘솔에 출력를 할때도 어떻게 구현 하냐에 따라 다르게 나타납니다. 또한 조건문가 반복문을 중첩으로 하면서 원하는 구구단 출력 프로그램을 완성 할 수가 있습니다.

 

   ㄴ. 별 다이아 몬드 찍기

 

   

위에 사진처럼 홀수 숫자를 입력하면 다이아몬드 모양이 별로 찍어서 출력을 하면 됩니다.

정답은 아래소스에 있습니다.

더보기
Scanner stdin = new Scanner(System.in);  // 입력객체 생성
System.out.print("원하는 홀수 숫자를 입력하세요 : "); // 출력
int num = stdin.nextInt(); // 입력된 값을 정수변수 i에 대입
int i = 1; // 정수변수 i를 선언후 값 1로 초기화
int num1 = (num/2) +1; // 정수변수 num1을 선언후 num변수의 값을 2로 나누고 1을 더한 값을 대입(소숫점은 절삭됨)
while(i<=num1) //변수 i가 변수 num1보다 작거나 같으면 반복
{		
    int j=1;		//정수 변수 j를 선언후 값을 1로 초기화
	while(j<=num1-i) // 변수 j가 변수 num1에 변서 i를 뺀 값 보다 작거나 같으면 반복
	{
        System.out.print(" "); // 출력
        j++; //j변수에 1을 더한다.
    }
    for(int x = i;x>=1;x--) 
    // 정수 변수 x를 선언 후에 변수 i 값을 대입 변수 x는1보다 크거나 같으면 
    //계속 반복되고 한번씩 반복이 끝날때마다  x변수의 값을 1을 뺍니다.
    {
        System.out.print("*");//출력
    }
    while(j<=i-1) //반복문 조건 j가 i-1보가 크면 반복 아니면 탈출
    {
        System.out.print("*"); //출력
        j++;//j변수를 1씩증가
    }
    System.out.println(); //개행 출력
    i++; //i변수를 1씩 증가
 }
 int num2 = (num/2);//정수 변수 num2를 선언후 변수 넘을 2로 나눈 값을 대입한다.
 i = 1; // 변수 i에 1을 대입한다.
 while(i<=num2) //변수 i가 변수num2 보다 작거나 같으면 반복
 {
    int j=1; // 정수변수 j를 선언후 1을 대입
    while(i>=j) //변수 i가 변수j보다 크거나 같으면 반복
    {
       System.out.print(" "); // 출력
       j++;//변수 j 1씩 증가
    }
    j=1; // 변수 j를 1을 대입
    num = num -2; 변수 num에 2를 빼고 다시 변수 num에 대입
    while(num>=j) // 변수 num이 변수 j보다 크거나 같으면 반복
    {
       System.out.print("*");//출력
       j++;//변수 j 1씩 증가
    }
    System.out.println();//개행 출력
    i++;//변수 i를 1씩 증가
}

 

위에 소스를 보면 콘솔에 출력를 할때도 어떻게 구현 하냐에 따라 다르게 나타납니다. 또한 조건문가 반복문을 중첩으로 하면서 원하는 구구단 출력 프로그램을 완성 할 수가 있습니다.

 

위에 문제를 직접 해결해 보시고 제가 구현한 소스를 확인을 해보시면 좋을 것 같습니다.

바로 확인을 하시면 스스로의 해결력이 커지는걸 방해하는 것과 같습니다. 그렇기 때문에 꼭 문제를 직접 확인을 해보시고 답을 봐주세요.

 

※ 저와 꼭 답이 일치하지 않아도 문제 없이 돌아간다면 정답입니다.

 

※ 긴 글을 읽어 주셔서 감사합니다. Java를 계속 진행해 나가겠습니다.

 

★ 이글 이후에는 Java 배열에 대한 내용을 정리해서 처음부터 정리를 할 예정입니다. 많은 관심 부탁드립니다.



 

  

반응형

댓글