JAVA 제어문 예제
[예제 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;
}