개발메모장

JAVA 제어문 예제

dorosy 2014. 12. 18. 16:53

[예제 1]  

 //년도를 입력받아 윤년인지 아닌지 출력하시오.
  // 4로 나누어서 나머지가 0이면 윤년
  // 4로 나누어서 나머지가 0이지만 100으로 나누어도 나머지가 0이면 윤년 아님
  // 위 식이 성립하면서 400으로 나눠 나머지가 0이면 윤년
  
  int year;
  Scanner scan = new Scanner(System.in);


//연도를 입력받고  
  System.out.println("Input year : ");
  year = scan.nextInt();
  

//윤년인지 아닌지 판단!
  if((year%4) == 0)   // 4로 나누어 떨어질 때
  {
   if((year%100) == 0)   // 4로 나누어 떨어지면서, 100으로 나누어 떨어질 때
   {
    if((year%400) == 0)  // 100으로 나누어 떨어지면서, 400으로 나누어 떨어질 때
     System.out.println("윤년");
    else  // 100으로 나누어 떨어지지마, 400으로 나누어 떨어지지 않을 때
     System.out.println("윤년이 아닙니다.");
   }
   
   else  // 4로 나누어 떨어지지만, 100으로 나누어 떨어지지는 않을 때
    System.out.println("윤년");
  }
  else  // 4로 나누어 떨어지지 않는 경우.
   System.out.println("윤년이 아닙니다.");

 

 

 

[예제 2]

  //가위바위보 : 컴퓨터와 유저가 단판 가위바위보를 해서 승자를 판정, 출력

 

//가위, 바위, 보 상수 정의
  final int GAWI = 0;
  final int BAWI = 1;
  final int BO = 2; // 0. 가위, 1. 바위, 2.보
  

//승자판정 상수 정의
  final int COM = 0;
  final int USER = 1;
  final int DRAW = 2;
  
  int computer, user;

  int winner=COM;   // 승자를 COM 으로 초기화 
  

//computer 의 가위바위보 랜덤함수로 입력받기
  computer = (int)(Math.random() *3); // 0~2
  

//사용자로부터 가위바위보 입력받기  
  Scanner scan = new Scanner(System.in);
  System.out.println("가위바위보를 시작하겠습니다. (0_GAWI, 1_BAWI, 2_BO)");
  user = scan.nextInt();  
  

//승자 판정

//비긴 경우
  if(computer == user)  
   winner = DRAW;

//사용자가 이긴 경우
  else if((computer == GAWI && user == BAWI) ||(computer == BAWI && user == BO) || (computer == BO && user == GAWI))
   winner = USER;

//둘 다 아닌 경우 -> winner 를 COM으로 초기화해놨으므로. computer가 자연스럽게 승자가 됨.
  

//승자 출력
  System.out.println("computer is" + computer + " , user is " + user);
  if(winner == COM)
   System.out.println("winner is computer");
  else if(winner == USER)
   System.out.println("winner is user");
  else
   System.out.println("draw");

 

 

 

 

[예제 3]

 //1~100 사이의 5의 배수를 출력하시오.


  for(int i=1; i<=100; i++){

// 5로 나누어 떨어지면 5의 배수
   if(i%5 == 0)
    System.out.print(i+ " ");
  }

 

 

[예제 4]

 //1-2+3-4+ ..... 99-100


  int sum = 0;
  for(int i=1; i<=100; i++){
   if(i%2 == 0)  //짝수는 빼주고
    sum-=i;
   else  //홀수는 더해주기.
    sum+=i;
  }
  System.out.println(sum);

 

 

 

[예제 5]

//1+2+4+7+11+16... 의 20번째 항까지의 합계

int total = 0, sum=1, count=1;


  while(true)
{
total += sum; 
   if(count == 20)

       break;
sum += count;
count++;
}

System.out.println(total);

 

 

 

[예제 6]

  // 숫자를 입력받으시오.
  // 입력받은 숫자의 자신을 제외한 약수의 합이 입력받은 숫자와 같은지 출력하시오.(완전수)
  // 4~1000 사이의 완전수를 찾아 출력하시오.

 

  int sum = 0;
  //4~1000 사이의 숫자를 차례대로 적용.
  for (int val = 4; val <= 1000; val++) {
   
   //자기자신을 제외한 약수의 합 구하기
   for (int i = 1; i < val; i++) {
    if (val % i == 0)// i 가 val의 약수인 경우
     sum += i; //sum 에다가 약수를 모두 더해줌.
   }

   //완전수인지 아닌지 체크
   if (sum == val)  //자신을 제외한 약수의 합이 자기자신과 같을 경우
    System.out.print(val + " ");// 출력(완전수만 출력하게 됨)
   
   sum = 0; //약수의 합을 구하기전에 0으로 초기화.

 

 

 

[예제 7]

//숫자 i를 입력받아 소인수분해를 하려고 한다.
  // 소인수 분해를 하는 방법은 아래와 같다.
  // 1. i의 최초의 약수를 출력한다.
  // 2. i를 위에서 찾은 약수로 나눈 몫으로 i를 업데이트 한다.
  // 3. i가 1이 되면 종료한다.
  
  Scanner scan = new Scanner(System.in);
  int input, divisor=1;
  

//숫자를 입력받아서
  input = scan.nextInt();
  while(true)
  {
   divisor++;

 

//divisor 가 input의 약수이면
   if(input%divisor == 0)
   {

//divisor 으로 input이 0으로 나누어 떨어지지 않을 때까지 나눈다.
    while(true)
    {
     System.out.print(divisor + " ");
     input /= divisor;
     if(input%divisor != 0)
      break;
    }
   }
   

//input을 모든 소인수로 나누어 1이 될 때까지 반복하다가

//input이 1이 된 순간, 모든 소인수분해가 완료된 것이므로.

//작업 종료
   if(input == 1)
    break;
  }