ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 4. 조건문, 반복문.. 계속 돌아돌아~
    Programming/JAVA 2010. 5. 3. 20:58
    1 조건문
    1.1 if문

    가장 일반적으로 사용되는 조건문이다.

    기본 구조
    if(조건– boolean 타입){
    code...
    }
    또는
    if(조건식)
    code… // code가한줄인경우중괄호{}생략
    1.1 if문

    예제
    class FlowEx1{
    public static void main(String[] args){
    int visitCount= 0;
    if (visitCount< 1) {
    System.out.println("처음오셨군요!") ;
    }
    }
    }

    실행결과

    처음 오셨군요!
    1.1 if문

    if/else문

    else문에는 조건식의 결과가 false일 때 실행되는 문장이 있다.

    문법
    if(조건식){
    code…
    }else{
    code…
    }
    1.1 if문

    예제
    public class FirstVisitIfElse {
    public static void main(String[] args) {
    int visitCount= 0;
    if(visitCount< 1){
    System.out.println("첫방문이시군요! 감사합니다.");
    }else{
    System.out.println("다시방문해주셔서감사합니다!");
    }
    System.out.println("방문횟수는" + visitCount+ "회입니다");
    }
    }

    실행결과

    다시 방문해 주셔서 감사합니다.

    방문횟수는 6회입니다.
    1.2 중첩 if/else문

    if문의블럭내에또다른if문을사용하는것

    중첩의 횟수에는 제한이 없다

    다만 코드의 가독성을 위해서는 많은 중첩은 좋지 않다

    문법
    if(조건식1){
    if(조건식2){
    code…
    }else{
    code…
    }
    }else{
    code…
    }
    1.2 중첩 if/else문

    예제
    public class NestedIfElse {
    public static void main(String[] args) {
    int score = 82;
    String grade =""; // 두문자를저장할것이므로변수의타입을String으로함.
    System.out.println("당신의점수는" + score + "입니다.");
    if (score >= 90){// score가90점보다같거나크면A학점(grade)
    grade = "A";
    if ( score >= 98) { // 90점이상중에서도98점이상은A+
    grade += "+";// grade = grade+ "+";와같다.
    } else if ( score < 94){
    grade += "-";
    }
    } else if (score >= 80){// score가80점보다같거나크면B학점(grade)
    grade = "B";
    if ( score >= 88) {
    grade += "+";
    } else if ( score < 84){
    grade += "-";
    }
    } else {// 나머지는C학점(grade)
    grade = "C";
    }
    System.out.println("당신의학점은" + grade + "입니다.");
    }
    }

    결과

    당신의 점수는 82입니다.

    당신의 학점은 B-입니다.
    1.3 switch문

    경우의 수가 많아 if문이 복잡해 질 경우에는 switch문 이 더 효과적이다.

    문법
    switch(조건식){
    case 특정값;
    code…
    [break;]
    case 다른특정값;
    code…
    [break;]
    [default:]
    //조건식의결과와일치하는case문이없을때수행될문장들
    }
    1.3 switch문

    용법

    조건식에는 정수형으로 표현이 가능한

    int, byte, short, char형만이올수있다.

    조건식을 먼저 계산한 다음 그 결과와 일치하는 case문으 로 이동한다.

    이동한 case문 이하의 문장을 수행하며 break문을 만나면 전체 switch문을 빠져나가게 된다.

    만일 case문 아래의 break문을 생략하면 다른 break문을 만나거나 switch문 블록({})의 끝을 만날때 까지 나오는 모 든 문장을 수행한다.
    1.3 switch문

    예제
    class FlowEx6{
    public static void main(String[] args){
    // Math클래스의random()함수를이용해서1~10사이의값을얻어낼수있다.
    int score = (int)(Math.random() * 10) + 1;
    switch(score*100) {
    case 100 :
    System.out.println("점수는100이고, 상품은자전거입니다.");
    break;
    case 200 :
    System.out.println("점수는200이고, 상품은TV입니다.");
    break;
    case 300 :
    System.out.println("점수는300이고, 상품은노트북입니다.");
    break;
    case 400 :
    System.out.println("점수는400이고, 상품은자동차입니다.");
    break;
    default :
    System.out.println("죄송하지만점수에해당상품이없습니다.");
    }
    }
    }
    1.3 switch문

    예제
    class FlowEx8{
    public static void main(String[] args){
    int score = 1;
    switch(score*100) {
    case 100 :
    System.out.println("당신의점수는100이고, 상품은자전거입니다.");
    case 200 :
    System.out.println("당신의점수는200이고, 상품은TV입니다.");
    case 300 :
    System.out.println("당신의점수는300이고, 상품은노트북입니다.");
    case 400 :
    System.out.println("당신의점수는400이고, 상품은자동차입니다.");
    default :
    System.out.println("죄송하지만당신의점수에해당상품이없습니다.");
    }
    }
    }
    1.3 switch문

    결과

    당신의 점수는 100이고, 상품은 자전거입니다.

    당신의 점수는 200이고, 상품은 TV입니다.

    당신의 점수는 300이고, 상품은 노트북입니다.

    당신의 점수는 400이고, 상품은 자동차입니다.

    죄송하지만 당신의 점수에 해당상품이 없습니다.

    해설

    switch문내의 case문에 break문이 없을 때 어떻게 실행 되는지를 보여준다.

    따라서 break문을 사용하는 것을 잊으면 안된다.
    1.3 switch문

    예제
    class FlowEx9{
    public static void main(String[] args){
    int score = 7;
    String msg="";
    score *= 100; // score = score* 100;
    msg= "당신의점수는" + score + "이고, 상품은";
    switch(score) {
    case 1000 :
    msg+= "자전거, "; // msg= msg+ "자전거, ";
    case 900 :
    msg+= "TV, ";
    case 800 :
    msg+= "노트북, ";
    case 700 :
    msg+= "자전거, ";
    default :
    msg+= "볼펜";
    }
    System.out.println( msg+ "입니다.");
    }
    }
    1.3 switch문

    결과

    당신의 점수는 700이고, 상품은 자전거, 볼펜입니다.

    해설

    switch문 내의 case문에 break문을 없앤 예제이다.

    때에 따라서는 break문을 없애 위와 같이 사용하는 것도 가능하다.

    중요한 것은 연산결과 일치하는 case문 이하의 문장들이 수행된다는 점이다.
    2 반복문
    2.반복문

    특징

    특정 작업이 반복되어 수행되도록 할 때 사용된다.

    종류

    for

    while

    do ~ while

    for, while문은조건에따라한번도수행되지않을수있다.

    그러나 do ~ while문은 최소한 한 번은 수행된다.

    for문과 while문은 구조와 기능이 유사하여 어느 경우 에나 서로 변환이 가능하나,

    for문은 주로 반복의 횟수를 알고 있는 경우에.

    while문은 단순히 조건에 따른 반복이 필요한 경우에 사용 된다.
    2.1 for문

    문법
    for(초기화; 조건식; 초기값의증감식){
    조건식이true일때실행되는문장들…
    }

    for문은 초기화, 조건식, 증감식, 실행문의 4부분으로 구성되어 있다.

    실행순서는 다음과 같다.

    1. 초기화  2. 조건식  3. 수행될 문장  4. 증감식  2. 조건식  …

    즉, 초기화는 처음에 한번만 수행된다.

    그 이후로는 2, 3, 4의 순서로 반복되다가 2의 조건식의 결과가 false이면 조건식을 빠져 나온다.

    조건식을 생략할 수 있으며 생략되면 true로 간주한다.
    2.1 for문

    for문의 예
    for( ; ; ){
    //수행될문장들
    }

    조건식이 없기 때문에 결과가 true로 간주되어 블록 안의 문장을 무한반복
    for(inti = 0 ; ; ){
    //수행될문장들
    }

    for문에int형변수i를선언하고0으로초기화했다.

    변수 i는 for문 내에서 선언되었기 때문에 for문 내에서만 유효하다
    2.1 for문

    for문의 예(계속)
    for(inti=1, j=1; i<10&&i*j<50; i++, j+=2){
    //수행될문장들
    }

    쉼표(,)를 이용하여 하나 이상의 변수를 선언하고 초기화 할 수있다.

    여기서는 매 반복 시마다 i는 1, j는 2씩 증가한다.
    2.1 for문

    예제
    public class ForTest{
    public static void main(String[] args) {
    for(inti=0; i>=0; i--){
    System.out.print(i+ “\t”);
    if(i== 5) System.out.println();
    }
    System.out.println();
    }
    }

    실행결과
     1
    098765

    43210

    실습

    1부터 10까지의 합을 계산하는 예제 구하기
    2.1 for문

    예제
    class FlowEx16{
    public static void main(String[] args){
    for(inti=2; i <=9; i++){
    for(intj=1; j <=9; j++){
    System.out.println( i +" * "+ j + " = " + i*j );
    }
    }
    }
    }

    실행결과

    2 * 1 = 2

    …중략…

    9 * 9 = 81

    해설

    for문에 다시 for문을 사용하는 예제이다.

    i는 단을 출력하는데에 사용, j는 1~9까지의 곱에 사용된다.
    2.2 while문

    조건식과 수행해야 할 블록으로 구성

    for문과 서로 변환이 가능하다.

    문법
    while(조건식){
    //조건식이참일때수행되는문장
    }
    2.2 while문

    예제
    public class WhileTest{
    public static void main(String[] args) {
    int i = 10;
    while(i>=0){
    // i—는후위형이기때문에i가출력된후감소된다.
    System.out.print(i--+ “\t”);
    if(i== 5) System.out.println();
    }
    System.out.println();
    }
    }

    실행결과
     1
    09876

    543210
    2.3 do/while문

    문법
    do{
    //조건식이참일때수행되는문장
    }while(boolean연산);//세미콜론반드시!

    do block내의 코드를 반드시 한번은 실행하고 시작되 는점이while문과의차이이다!
    2.3 do/while문

    예제
    public class DoWhileTest{
    public static void main(String[] args) {
    int i = 10;
    do{
    // i—는후위형이기때문에i가출력된후감소된다.
    System.out.print(i--+ “\t”);
    if(i== 5) System.out.println();
    } while(i>=0);
    System.out.println();
    }
    }

    실행결과
     1
    09876

    543210
    2.4 break문

    앞서switch문에서잠깐본바와같이break문은현 재 위치에서 가장 가까운 switch문 또는 반복문을 벗 어나는데 사용된다

    특히 if문과 함께 사용되어 특정조건을 만족하면 반복 문을 벗어난다
    2.4 break문

    예제
    public class BreakTest{
    public static void main(String[] args) {
    int sum = 0;
    for(inti=0; i<100; i++){
    sum = sum+ i;
    if(i== 10) break;
    }
    System.out.println(sum);
    }
    }

    결과

    55
    2.5 continue문

    continue는 break와는 달리 반복문을 벗어나지 않고 continue문 하단의 코드를 실행하지 않고 반복문의 맨 처 음으로 보낸다.

    특히 if문과 함께 사용되는 것은 break문과 동일하다.

    예제
    public class ContinueTest{
    public static void main(String[] args) {
    int sum = 0;
    for(inti=0; i<100; i++){
    if(i== 10) continue;
    sum = sum+ i;
    }
    System.out.println(sum);
    }
    }

    결과

    4940
    2.6 label

    여러 반복문이 중복되어 있을때 반복문 앞에 label을 붙이고 break나 continue에 label을 붙여 줌으로써 하나 이상의 반복문을 벗어나거나 반복을 건너뛸 수 있다.

    거의 사용되지 않는 기능이지만, 때로는 유용하게 사 용이 가능하다.
    2.6 label

    예제
    class LabelTest{
    public static void main(String[] args){
    // for문에Loop1이라는이름을붙였다.
    Loop1 : for(inti=2;i <=9;i++) {
    for(intj=1;j <=9;j++) {
    if(j==5)
    break Loop1;
    //break;
    //continue Loop1;
    //continue;
    System.out.println(i+"*"+ j +"="+ i*j);
    } // end of for i
    System.out.println();
    } // end of Loop1
    }
    }

    주석처리된 부분을 하나씩 해제해 가며 실행해 보자!
Designed by Tistory.