티스토리 뷰

자바에서 제어문이란? 



--> 순서에 따라서가 아닌 필요에 따라서 조건이 만족되면 문장의 실행 순서를 변경할 수 있는 기능이 제공. 조건문과 반복문으로 나뉜다. 



1. 조건문 - 조건에 따라서 여러개의 실행 경로 가운데 하나를 실행


반복문 - 조건에 따라서 여러개의 같은 처리를 반복



대표적인 조건문 - if - else


if (조건식)

문장1; -> 조건식이 true일 경우 실행


else

문장2; --> 조건식이 false일 경우 실행



else문이 생략 될 수 있으며 이 경우를 if-then구조라고 한다. 


복합문

(compound statement)


중괄호를 이용하여 문장들을 그룹핑 하는 것

블록 이라고도 한다

단일문 대신 들어 갈 수 있다 .




먼저 조건문 부터 볼 것이다. 아래의 예시를 보자

(이전 게시글과 마찬가지로 출력된 결과값은 파란색으로 표시하였으니 결과값을 보면서 코딩하도록 하자)




예시 1)


import java.util.Scanner;


//제어문

public class Exam_01 {

public static void main(String[] args) {

final int rate = 5000;

int pay;

int hours;

Scanner input = new Scanner(System.in);

System.out.println("시간을 입력하세요");

hours = input.nextInt();

if (hours >8)

pay = rate * 8 +(int)(1.5*rate*(hours-8));

else

pay = rate * hours;

System.out.printf("임금은 %d입니다.\n",pay);

}

}


시간을 입력하세요

5

임금은 25000입니다.



연속적인 if문


다음 예제는 입력한 금액의 많고 적음에 따라 적용하는 세율이 달라지는 것을 구현한다. 


예제 2)


import java.util.Scanner;


public class Exam_02 {

public static void main(String[] args) {

int income;

int tax;

System.out.println("과세 표준 금액을 입력하시요");

Scanner input = new Scanner(System.in);

income = input.nextInt();

if (income <= 1000)

tax = (int)(0.09*income);

else if (income <= 4000)

tax = (int)(0.18*income);

else if (income <8000)

tax = (int)(0.27*income);

else

tax = (int)(0.36*income);

System.out.println("소득세는"+tax+"입니다");

}

}


과세 표준 금액을 입력하시요
3000
소득세는540입니다


switch문 - if 문과 비슷한 문법


예제 3)


import java.util.Scanner;


public class Exam_03 {

public static void main(String[] args) {

int number;

Scanner sc = new Scanner(System.in);

System.out.println("숫자를 입력하세요:");

number = sc.nextInt();

switch(number) { //if문에 해당되는 조건식의 일부라고 생각하면 된다. 

case 0:

System.out.println("없음");

break;

case 1:

System.out.println("하나");

break;

case 2:

System.out.println("둘");

break;

default: //앞의 조건식이 해당되지 않을 때 사용된다.

System.out.println("많음");

break;

}

}

}

숫자를 입력하세요:
1
하나



다른 예제를 살펴보자


예제 4)


public class Exam_04 {

public static void main(String[] args) {

String month = "Febuary";

int monthNumber;

switch(month) {

case "January":

monthNumber = 1;

break;

case"Febuary":

monthNumber = 2;

break;

case"March":

monthNumber = 3;

break;

default:

monthNumber = 0;

break;

}

System.out.println(monthNumber);

}

}

2



breack문을 쓰지 않아도 된다. 고의적으로 break문을 안쓰는 경우를 살펴보자

이 경우 if 문에서 복수의 조건을 or로 처리하는 것과 같다. 


예제를 살펴보자




예제 5)


import java.util.Scanner;


public class Exam_05 {

public static void main(String[] args) {

int month;

int year = 2009;

int days = 0;

System.out.println("일수를 알고싶은 달을 입력하세요");

Scanner scan = new Scanner(System.in);

month = scan.nextInt();

switch(month) {//break문이 고의적으로 생략되었다

case 1:   case 3:    case 5:   case 7: 

case 8:   case 10:   case 12:

days = 31;

break;

case 4:  case 6:  case 9:  case 11://break문이 고의적으로 생략되었다.이 경우 if 문에서 복수의 조건을 or로 처리하는 것과 같다. 

days = 30;

break;

case 2:

if(((year % 4 ==0) && (year % 100 != 0) || (year % 400 ==0)))

days = 29;

else

days = 28;

break;

default:

System.out.println("월이 잘못되었습니다");

break;

}

System.out.println("월의 날수는"+days);

}

}

일수를 알고싶은 달을 입력하세요
7
월의 날수는31


스위치문 실습 


import java.util.Scanner;


public class Exam_08 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("1,2,5 중 마음에 드는 번호를 선택하세요.과일을 보여드립니다");

int fruit = sc.nextInt();

switch(fruit) {

case 1: 

System.out.println("사과");

break; // case 1을 만족 후 시스템 종료. 

case 2:

System.out.println("배");//break문이 없으므로 다음 break까지 수행된다

case 5:

System.out.println("바나나");

break;//case5 만족 후 바나나를 출력 후 스위치문 종료

default:

System.out.println("그냥 과일");//1,2,5가 아닌 다른 숫자를 입력 받으면 출력된다

}

}


}


1,2,5 중 마음에 드는 번호를 선택하세요.과일을 보여드립니다
1
사과



if - else 실습으로 넘어가 보자 




실습 1)


import java.util.Scanner;


public class Exam_06 {

public static void main(String[] args) {

//사용자로 부터 정수를 입력받아 n에 저장한다.

//변수 n의 값이 100보다 크거나 같으면 “large", 

//100보다 작으면 ”small"을 출력하는 

//if-else 문을 작성하라.

Scanner sc = new Scanner(System.in);

System.out.println("정수를 입력하세요:");

int number = sc.nextInt();

if (number >= 100)

System.out.println("large");

else

System.out.println("small");

}

}

정수를 입력하세요:
100
large


실습 2) 


import java.util.Scanner;


public class Exam_07 {

public static void main(String[] args) {

//사용자로 부터 컵 사이즈에 해당하는 정수를 입력받아 n에 저장한다.

//입력받은 수가 100ml미만은 small, 

//100ml이상 200ml미만은 medium, 

//200ml 이상은 large라고 출력하는 연속적인 if-else 문을 작성하시오.

Scanner sc = new Scanner(System.in);

System.out.println("컵 사이즈를 입력하세요");

int cupSize = sc.nextInt();


if(cupSize <100)

System.out.println("small");

else if(cupSize >100 && cupSize < 200)

System.out.println("medium");

else if(cupSize >= 200)

System.out.println("large");

}

}


컵 사이즈를 입력하세요
200
large


실습 3) 3개의 숫자를 입력 받아서 크기순으로 정렬한 것을 출력하는

프로그램을 작성하라.


이것은 두가지를 포스팅 한다. 첫번째는 내가, 두번째는 강사님이 주신 답안이다. 


1) 내가 짠 코드


import java.util.Scanner;


public class Exam_10 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.print("첫번째 정수를 입력하세요:");

int num1 = sc.nextInt();

System.out.print("두번째 정수를 입력하세요");

int num2 = sc.nextInt();

System.out.print("세번째 정수를 입력하세요");

int num3 = sc.nextInt();

if (num1 > num2 && num2 > num3)

System.out.println(""+num1+" "+ num2+" "+ num3 +" ");

else if (num1 >num3 && num3 > num2)

System.out.println(""+num1+" "+ num3+" "+ num2 +" ");

else if(num2>num1 && num1 > num3)

System.out.println(""+num2+" "+ num1+" "+ num3 +" ");

else if(num2 > num3 && num3 >num1)

System.out.println(""+num2+" "+ num3+" "+ num1 +" ");

else if(num3 > num1 && num1 >num2)

System.out.println(""+num3+" "+ num1+" "+ num2 +" ");

else if(num3 > num2 && num2 >num1)

System.out.println(""+num3+" "+ num2+" "+ num1 +" ");

}


}


2) 강사님이 주신 모범코드

package day09;
import java.util.Scanner;
public class day09_01 {
public static void main(String[] args) {
int x, y, z, min;
Scanner scan = new Scanner(System.in);
System.out.print("정수를 입력하세요");
x = scan.nextInt();
System.out.print("정수를 입력하세요");
y = scan.nextInt();
System.out.print("정수를 입력하세요");
z = scan.nextInt();
if( x < y ){
if( x < z ){
if( y < z )
System.out.println(x+" "+y+" "+z);
else
System.out.println(x+" "+z+" "+y);
}
else {
if( y < x )
System.out.println(z+" "+y+" "+x);
else
System.out.println(z+" "+x+" "+y);
}
}
else {
if( y < z ){
if( x < z )
System.out.println(y+" "+x+" "+z);
else
System.out.println(y+" "+z+" "+x);
}
else {
if( y < x )
System.out.println(z+" "+y+" "+x);
else
System.out.println(z+" "+x+" "+y);
}
}
}
}



댓글