제어문 (Control Statement)

1. 입력기능실습

아스키코드로 숫자 하나를 입력받아보자. 
read 함수는 키보드 하나갚을 받아 아스키코드로 변환해준다. 
input이라는 변수에 저장한다. 아스키코드로 받기 때문에 변수를 기본형 int로 쓴다.

아래 코드를 입력해보자.

class InputTest{
    public static void main(String[] args){
        int input = java.lang.System.in.read();
        System.out.println("입력받은 값 : " + input);
    }

}


이 오류메시지가 뜬다.

입력받을 때 조심해야한다는 오류메시지다. 

자바에게 대신 입력할 것을 검사해달라 코딩을 해본다. 

메인함수 옆에 throws java.io.IOException을 넣어보자


class InputTest{

    public static void main(String[] args) throws java.io.IOException{

        //read 함수는 키보드 하나갚을 받아 아스키코드로 변환해준다.

        //input이라는 변수에 저장한다.

        //아스키코드로 받기 때문에 변수를 기본형 int로 쓴다.

        int input = java.lang.System.in.read();

        System.out.println("입력받은 값 : " + input);

    }

}


※ 결과값

7

입력받은 값 : 55



아스키코드가 아닌 문자를 입력한 그대로 해주려면 캐스팅을 해주면 된다.


class InputTest{

    public static void main(String[] args)throws java.io.IOException{

        

        System.out.print("입력해주세요 : ");

           //read 함수는 키보드 하나갚을 받아 아스키코드로 변환해준다.

        //input이라는 변수에 저장한다.

        //아스키코드로 받기 때문에 변수를 기본형 int로 쓴다.

        int input = java.lang.System.in.read();

        //문자처리를 위해 char로 캐스팅해준다.

        System.out.println("입력받은 값 : " + (char)input);

    }

}


결과값

입력해주세요 : s

입력받은 값 : s



그러나 이경우 숫자를 입력하면 숫자가 아닌 계산할 수 없는 문자로 출력된다. 

다른 방법도 있지만 아직 깊이 배우지 않았기 때문에 꼼수를 써보자. 

아스키코드와의 차이 갚인 48을 빼는 것이다. 

적어도 한자리수의 경우는 제대로 계산할 수 있다.


class InputTest{

    public static void main(String[] args)throws java.io.IOException{

        

        System.out.print("숫자를 입력해주세요 : ");

//입력값에서 48을 빼준다.        

int input = java.lang.System.in.read()-48;

        System.out.println("입력받은 값 : " + input);

    }

}


※ 결과값

숫자를 입력해주세요 : 3

입력받은 값 : 3


그럼 이번에는 입력을 두번 해보자.

문자 출력과 숫자를 출력해보자.


class InputTest{

    public static void main(String[] args)throws java.io.IOException{

        

        System.out.print("입력해주세요 : ");

        //문자를 출력한다.

        int input = java.lang.System.in.read();

        System.out.println("입력받은 값 : " + (char)input);

        

        System.out.print("숫자를 입력해주세요 : ");

        //입력값에서 48을 빼준다.

        input = java.lang.System.in.read()-48;

        System.out.println("입력받은 값 : " + input);

    }

}


※ 결과값


입력해주세요 : 4

입력받은 값 : 4

숫자를 입력해주세요 : 입력받은 값 : -35



결과값이 이상하다. 

분명 코드를 두번 입력 받도록 짰는데 왜 입력을 두번 받지 못하는 것일까? 

이는 소프트웨어가 아닌 하드웨어 문제이다.


우리가 A라는 키보드에서 치는 순간 하드웨어에서는 

메모리(램)에 임시저장했다가 화면에 보여진다. 

이렇듯 램은 임시기억공간이다. 

임시기억공간이라는 측면에서 이는 마치 변수와 같다. 


똑같은 임시기억공간이지만 시스템이, 

컴퓨터가 필요에 의해서 만든 임시기억공간이기 때문에 

변수와 다르게 용어를 Buffer라고 하여구분한다. 


입력한 값은 임시로 저장하기 때문에 '입력 버퍼'라고 부른다.

프린터를 할 때 프로그램을 꺼도 프린트가 계속 되는 

이유도 이러한 임시저장공간인 입력버퍼에 들어가기 때문이다.

(참고로 프린터자체에서 사용하는 메모리를 spool이라고 한다.)


A를 키보드를 치는 그 순간 계속 임시기억장소인 버퍼에 모아둔다. 

버퍼가 있으면 수정을 할 수 있지만 버퍼가 없으면 수정이 불가능하다. 

바로 출력이 되기 때문이다.

이 버퍼라고 불리는 메모리에는 

어떤 위치에 입력값이 저장될지를 알려주는 포인터가 있다.


값이 입력되었을 때 포인터는 

한 칸씩 이동하면서 메모리 어디에 저장될지를 가리킨다.

A를 누를 때 포인터가 메모리에 빈 공간으로 이동한다.


그리고 엔터를 눌었을 때 포인터가 다음 포인터를 이동해야하는데

엔터를 치면 컴퓨터가 입력을 종료한 것으로 알기 때문에 

포인터가 다음으로 이동하지않는다.


엔터키값도 메모리에 저장되기 때문에 포인터가 거기에 머무는 것이다. 

그래서 위의 예제에서 값이 두가지가 입력되지 않았던 것이다.


그럼 이 문제를 어떻게 해결해야 할까?


첫째, 현재 위치에 메모리를 건드려 삭제한다.

둘째, 엔터키 값을 피해서 강제로 포인터를 이동한다.


C언어에서는 둘 다 할 수 있지만 java에서는 두번째 방법밖에 할 수 없다.

엔터키를 건너 뛰려면 자바의 최소단위인 2바이트를 건너뛰어야 한다.


class InputTest{

    public static void main(String[] args)throws java.io.IOException{

        

        System.out.print("입력해주세요 : ");

        //문자를 출력한다.

        int input = java.lang.System.in.read();

        System.out.println("입력받은 값 : " + (char)input);

        

        //메모리에서 엔터값을 피해 2바이트를 건너뛴다.

        System.in.skip(2);

        

        System.out.print("숫자를 입력해주세요 : ");

        //입력값에서 48을 빼준다.

        //똑같은 변수에는 타입을 또 선언하지 않는다.

        input = java.lang.System.in.read()-48;

        System.out.println("입력받은 값 : " + input);

    }

}


※ 결과값

입력해주세요 : r

입력받은 값 : r

숫자를 입력해주세요 : 1

입력받은 값 : 1


이처럼 모든 프로그램에서는 

하드웨어적 지식이 함께 있어야한다.

입력버퍼도 있지만 출력버퍼로 있다.


동일한 메모리지만 용도에 따라 구분이 된다. 

차차 자료구조, 알고리즘으로 나중에 써볼 예정이다.



2. 제어문 종류


- 제어문은 ( ) 괄호가 있다고 해서 함수(메서드)가 아니다.

- JAVA에서는 함수라는 말 대신에 메서드라는 말을 쓴다.


1) 조건문 (Conditional statement)

   - 조건은항상 참이라는 전제를 깔고간다.


A. if문 


<문법1>


1. 한 문장 일 때

 if(조건식)  // 만약에 괄호 안의 조건식이 참이라면

 문장;        // 이 문장을 실행해라 

        

2. 여러 문장 일 때            

if(조건식) {

문장;

문장;

...

}


     

예제를 보자


class IfTest {

        public static void main(String[] args)throws java.io.IOException{

            System.out.print("숫자 입력 : ");

            int num = System.in.read()-48;

            

            

            //입력받은 num변수의 값이 짝수인지 홀수인지

            if((num%2) == 0)

                System.out.println("짝수입니다.");

            //{}를 써도 괜찮고 안써도 괜찮다.

            if((num%2)!= 0) {

                System.out.println("홀수입니다.");

            }    

        }

}


※ 결과값

숫자 입력 : 3

홀수입니다.


첫번째 방법의 단점은 조건이 참이라는 

전제를 깔고들어가기 때문에 

조건이 거짓일 때는 또 if문을 한 번 더 써야한다.


 <문법2>


 if ~ else

if(조건식) {

문장;

문장;

  ...

}

   else {

  문장;

  문장;

         }       

 


짝수와 홀수를 구분하는 프로그램을 짜보자.


class IfTest {

        public static void main(String[] args)throws java.io.IOException{

            System.out.print("숫자 입력 : ");

            int num = System.in.read()-48;

            

            /*

            //if문 첫번째 방법

            //입력받은 num변수의 값이 짝수인지 홀수인지

            if((num%2) == 0)

                System.out.println("짝수입니다.");

            //{}를 써도 괜찮고 안써도 괜찮다.

            if((num%2)!= 0) {

                System.out.println("홀수입니다.");

            */

            

            if((num%2) == 0)

                System.out.println("짝수입니다.");

            else

                System.out.println("홀수입니다.");

        }

}


※ 결과값


숫자 입력 : 3

홀수입니다.


<문제>

입력받는 값이 'a', 'b', 'c'이면 "정답" 이라고 출력하고 

그렇지 않으면 "오답"이라고 출력하세요.


<문법 1의 경우>

class IfTest {

        public static void main(String[] args)throws java.io.IOException{

            System.out.print("정답 입력 : ");

            char result = (char) System.in.read();

            

            if(result == 'a' || result == 'b' || result == 'c'){

                System.out.println("정답");

            }else{

                System.out.println("오답");

            }    

        }

}


※ 결과값

정답 입력 : a

정답



<문법 2의 경우>

class IfTest {

        public static void main(String[] args)throws java.io.IOException{

            System.out.print("정답 입력 : ");

            char result = (char) System.in.read();

            

            if(result >= 'a' && result <= 'c'){

                System.out.println("정답");

            }else{

                System.out.println("오답");

            }    

        }

}




※ 결과값

정답 입력 : d

오답



일반적인 if문인 <문법1>과 <문법2>의 

경우 조건을 하나밖에 못쓴다는 단점이 있다.

그래서 이럴 때는 다중if문을 쓴다. 


<다중if문 문법>


if(조건식){

    문장;

    문장;

      ...

}

else if(조건식) {

    문장;

    문장;

}

else

문장;



<문제>

평균별로 성적을 A~F 까지 등급을 나누시오.


class IfTest {

        public static void main(String[] args)throws java.io.IOException{

            // 다중 if 문

            int avg = 78;

            

            char grade;

            if(avg >= 90)

                grade = 'A';

            else if(avg >=80)

                grade = 'B';

            else if(avg >=70)

                grade = 'C';

            else if(avg >=60)

                grade = 'D';

            else if(avg >=50)

                grade = 'E';

            else

                grade = 'F';

            

            System.out.println("당신의 성적 : " + grade);

            

        }

}


※ 결과값

당신의 성적 : C


여기서 else가 빠지면 오류가나는데 이유는 변수를 초기화를 시켜주지 않아서이다.


변수의 3가지 특징을 기억해보자.


변수의 3가지 특징


첫째, 임시기억장소다.


둘째, 반드시 선언을 해야한다.


셋째, 반드시 초기화를 해야한다.


초기화를 해주어 다시 써보면


class IfTest {

        public static void main(String[] args)throws java.io.IOException{

      

            // 다중 if 문

            int avg = 78;

            

            //변수 초기화

            char grade = 'F';

            if(avg >= 90)

                grade = 'A';

            else if(avg >=80)

                grade = 'B';

            else if(avg >=70)

                grade = 'C';

            else if(avg >=60)

                grade = 'D';

            System.out.println("당신의 성적 : " + grade);

            

        }

}


※ 결과값

당신의 성적 : C



<nested if문> (중첩된 if문)


   - if문 여러개를 합쳐서 사용 할 수있다.

   - if문이 아니라 switch 등 다른 것들도 합쳐서 사용할 수 있다.

   - 이는 문법이 아니라 활용 방법이다.


nested if문 문법


if(조건식) //이 조건식이 참이어야지만 else로 넘어가지 않고 내부 if문이 실행됨.

     문장;

     if(조건식)

         문장;

         else

              문장;

         else

               문장;

            if(조건식)

               문장;



<문제>

어디선가 데이터 3개를 구해왔다고 가정해보자.


<정답>


class IfTest{

    public static void main(String[] args) {

        int a=8, b=7, c=9;

        if(a>b) {

            if(a>c)

                System.out.println("a가 제일 크다");

            else

                System.out.println("c가 제일 크다");

        }

        else{

            if(b>c)

                System.out.println("b가 제일 크다");

            else

                System.out.println("c가 제일 크다");

    }

}


※ 결과값

c가 제일 크다



<문제>

아이디와 패스워드를 입력하면 구분하는 프로그램을 만들자


class IfTest2{

    public static void main(String[] args) throws java.io.IOException{

        //아이디 : 'X', 패스워드 : ?

        System.out.print("ID : ");

        char id =(char)System.in.read();

        

        System.in.skip(2);

        

        System.out.print("PassWord : ");

        char pass = (char)System.in.read();

        

        if(id != 'x') {

            if(pass != '7')

                System.out.println("둘 다 틀림");

            else

                System.out.println("아이디만 틀림");

        }

        else{

            if(pass != '7')

                System.out.println("패스워드만 틀림");

            else

                System.out.println("로그인 성공");

        }

        

    }

}    


※ 결과값

ID : x

PassWord : 7

로그인 성공



B. switch문


<문법>

    switch(변수 또는 수식){

            case 값 :

                  문장;

            case 값 :

                  문장;

            case 값 :

                   문장;

            ...

            [default : 문장;]

    }


    - 다중조건문과 같이 변수가 첫번째 case와 같을 경우 

  두번째 case와 같을 경우 세번째 case와 같을 경우를 비교한다.

    - case 값 사이에 '같다'는 조건식이 생략되어 있다.

    - if 문에 비해 불편하나 코드가 깔끔하여 많이 쓰인다.

    

    <예제>       

   class SwitchTest {

    public static void main(String[] args){

        int data = 1;

        

        switch(data){

            case 1:

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

            case 2:

                System.out.println("배");

            case 3:

                System.out.println("포도");

            default:

                System.out.println("해당 과일 없음");

        }    

    }

}


※ 결과값

사과

포도

해당 과일 없음  

      


그런데 이렇게 코딩을 하면 원하는 

결과가 아니라 결과값이 case별로 모두 나온다. 

에러는 안나지만 원하는 결과가 아니다. 

이럴 때 break를 걸면 원하는 결과값에서 switch문을 멈출 수 있다.


<예제>

class SwitchTest {

    public static void main(String[] args){

        int data = 1;

        

        switch(data){

            case 1:

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

                break;

            case 2:

                System.out.println("배");

                break;

            case 3:

                System.out.println("포도");

                break;

            default:

                System.out.println("해당 과일 없음");

        }    

    }

}    


※ 결과값

사과


switch문은 if문과 동일하지만 코드가 깔끔해서 많이 쓴다. 

switch문 안에 if문을 쓸 수도 있고 if문 안에 switch문을 쓸 수도 있다.  

switch문이 불편한 점이 하나 더 있다. 정수형만 사용이 가능하다.


<예제>

class SwitchTest {

    public static void main(String[] args){

        //실수형으로 할 경우

        double data = 1;

        

        switch(data){

            case 1:

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

                break;

            case 2:

                System.out.println("배");

                break;

            case 3:

                System.out.println("포도");

                break;

            default:

                System.out.println("해당 과일 없음");

        }    

    }

}


※ 결과값

SwitchTest.java:5: error: incompatible types: possible lossy conversion from double to int

                switch(data){

                      ^

1 error



같은 정수형이여도 long은 안된다.


class SwitchTest {

    public static void main(String[] args){

        //실수형으로 할 경우

        long data = 1;

        switch(data){

            case 1:

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

                break;

            case 2:

                System.out.println("배");

                break;

            case 3:

                System.out.println("포도");

                break;

            default:

                System.out.println("해당 과일 없음");

        }

    }

}


※ 결과값

SwitchTest.java:6: error: incompatible types: possible lossy conversion from long to int

                switch(data){

                      ^

1 error



<예제 : 학점 구해보기>

class SwitchTest {

    public static void main(String[] args){

        int avg = 78;

        switch(avg/10){

            case 10:

                System.out.println("grade =" + 'A');

                break;

            case 9:

                System.out.println("grade =" + 'A');

                break;                

            case 8:

                System.out.println("grade =" + 'B');

                break;

            case 7:

                System.out.println("grade =" + 'C');

                break;

            case 6:

                System.out.println("grade =" + 'D');

                break;

            case 4:

                System.out.println("grade =" + 'E');

                break;

            default:

                System.out.println("grade =" + 'F');

        }


※결과값

grade =C

        


★ 조건문 연습문제 ★

1.입력받은 값이 문자이면 "문자"라고 출력하고 그렇지 않으면 "기타"라고 출력하라


a~z비교



<풀이>


class IfHomeWork {

    public static void main(String[] args)throws java.io.IOException{

        System.out.print("문자인가요? : ");

        char result = (char) System.in.read();

        if((result >= 'a' && result <= 'z') || (result >= 'A' && result <= 'Z'))

            System.out.println("문자");

        else

            System.out.println("기타");

                    

    }

}






2.입력받은 값이 소문자이면 소문자라고 대문자이면 대문자라고 숫자이면 숫자라고 출력하라.

    그 외의 값은 기타라고 출력하라.



<풀이>


class IfHomeWork {

    public static void main(String[] args)throws java.io.IOException{

        System.out.print("어떤 글자인가요? : ");

        char result = (char) System.in.read();

        if(result >= 'a' && result <= 'z')

            System.out.println("소문자");

        else if (result >= 'A' && result <= 'Z')

            System.out.println("대문자");    

        else

            System.out.println("숫자");

    }

}

        



3.1~9까지 간단한 전자계산기 프로그램

    연산자 : + (*, -, /)

    숫자 1 : 2

    숫자 2 : 3

    결과 : 2 + 3 = 5


<풀이>


class IfHomeWork {

     public static void main(String[] args)throws java.io.IOException{

        System.out.print("첫번째 숫자");

        int num1 = System.in.read()-48;

        

        System.in.skip(2);

        

        System.out.print("두번째 숫자");

        int num2 = System.in.read()-48;


        System.out.println("덧셈 = " + (num1+num2));

        System.out.println("뺄셈 = " + (num1-num2));

        System.out.println("곱셈 = " + (num1*num2));

        System.out.println("나눗셈 = " + (num1/num2));

        System.out.println("나머지 = " + (num1%num2));

    }

}



2) 반복문(Loop)


반복문은 조심해서 써야한다.


<반복문 유의사항>

첫번째. 무한반복 될 수 있다.

두번째, 반복횟수가 다르면 결과값이 큰 차이가 있다.


<반복문의 기본적인 구조>

초기화 

조건식

카운터


카운터란?

- 반복문을 쓰면 카운터 변수가 따라다닌다. 카운터 변수는 반복문의 반복횟수를 세어준다.



<종류>

while


do~while


for



while문


<while문 문법>

while(조건식){

    문장;

      ...

}


<문제>

* 10개를 while 조건문을 사용해 출력해보자.


class LoopTest1{

    public static void main(String[] args){
        System.out.println("**********");
        
        //초기화 : 반복문의 초기값을 정해준다.
        //카운트하기 편하기 쉬운 숫자를 준다. 일반적으로 0을 준다.
        int cnt = 0;
        //조건식 : 반복횟수를 지정하는 역할을 한다.
        while(cnt<10){
            System.out.print("*");
            //카운터 : 반복문의 반복횟수를 세어준다.
            cnt++;
        }
      
    }
}


※ 결과값

**********
**********


<문제>

1~10까지의 합을 구해보자.
class LoopTest1{
    public static void main(String[] args){
        System.out.println("**********");
        
        //1-10합계를 구하시오.
        int cnt = 0, sum = 0;
        while(cnt<=10){
            //sum값은 누적된다.
            sum += cnt;//sum = sum + cnt;
            cnt++;
        }
        System.out.println("결과 : " + sum);    
        
        
    }
}

※결과값
**********
결과 : 55

<문제>
2의 10승을 구해보자!

class LoopTest1{
    public static void main(String[] args){
        System.out.println("**********");
             
        //2의 10승
        int cnt = 0,sum = 1;
        while(cnt <= 10){
            sum *= 2; // sum = sum * 2;
            cnt++;
        }
        System.out.println("결과 : " + sum);
    }
}

※ 결과값
**********
결과 : 2048 

여기서 카운터는 ++로 1씩 증가하는 것이 가장 안정적이고,
초기값은 0 혹은 1로 하는 것이 안정적이다.
무엇보다 어떻게 하는 것이 가장 실수를 덜할 수 있는지 고민해야한다.

<while문 무한반복 방법>
while(true){
    문장;
}


do while문

<do while 문법>
do {
      문장;
        ...
               }while(조건식);

do ~ while 형식과 기능은 while과 같다.
조건식을 뒤로 넣을 때 쓴다.
최소의 한 번 이상 실행해야 할 때는 do ~ while을 쓴다.
while 과 do ~ while 선택은 취향차이다.

for 문

융통성이 있는 문법이고 개발자들이 선호하는 문법이다.

<for 문법 - 1>
for(초기화; 조건식; 카운터)
    문장;
    
for문은 문장 순서에 유념해야 한다.

순서 : 초기화 > 조건식 > 문장 > 카운터 > 조건식 > 문장 > 카운터...

<예제>
class LoopTest1{
    public static void main(String[] args){
        System.out.println("**********");
        for(int cnt=0; cnt<10; cnt++)
            System.out.print("*");
    }
}


<for문의 구조>
초기화 : 처음 실행되면서 딱 1번만 실행된다.
조건식 : 조건이 거짓이면 1번도 실행 안하고 빠져나간다.
조건식 실행 후 문장까지 넘어간 후 카운터로 돌아간다.

순서 : 초기화 > 조건식 > 문장 > 카운터 > 조건식 > 문장 > 카운터...

class LoopTest1{
    public static void main(String[] args){
         int cnt;
        //조건문 안에 타입을 선언하면 에러가 나는데 이는 변수의 유효범위 때문이다.
        for(cnt=0; cnt<8; cnt++){
            cnt += cnt; // cnt = cnt +cnt;
        }    
        System.out.println("cnt = " + cnt);
            
    }
}

※결과값
**********
cnt = 15

<for 문법 - 2>
for (;조건식 ; 카운터)
       문장;

<for 문법 - 3>
초기화
for(;;카운터){
...
조건식
...
}

<for 문법 - 4>
초기화 
for(;;){
...
조건식
...
카운터
}

<for 문법 - 4>에서 (;;)은 무한반복이다.
무한반복을 해결하기 위해 조건식을 쓴다.
무한반복이 무조건 나쁜 것은 아니다. 
한 예로 서버의 경우는 무한반복이 필요하다.
반복 횟수가 몇 번인지 모를 때는 
반복문을 강제 종료를 해야하는데 어떻게 할까?

<반복문 강제 종료>
1) break; (완전종료)
2) continue; (일시종료)

break와 continue는 반드시 반복문 안에서만 사용해야한다.
swich 문법에서의 break와 continue는 
반복문 전용 문법에서 빌려온 것이기 때문에 예외로 한다.

<예제>
class LoopTest1{
    public static void main(String[] args){
       
        for(int cnt = 0; cnt<10; cnt++){
                if(cnt == 5)
                     break;
                
                System.out.println(cnt);
        }    
    }
}

※결과값
0
1
2
3
4

<예제>
class LoopTest1{
    public static void main(String[] args){
          for(int cnt = 0; cnt<10; cnt++){
                if(cnt == 5)
                     continue;
                
                System.out.println(cnt);
        }    
    }
}

※ 결과값
0
1
2
3
4
6
7
8
9


<반복문의 중첩>

반복문을 중첩해서 실행해보자.

<문제>
            **********
            **********
            **********
을 그려보자

class LoopTest2{
    public static void main(String[] args){
    /*
            **********
            **********
            **********
    */
    
        for(int row = 0; row<3; row++){
            for(int col = 0; col<10; col++){    
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

※ 결과값
**********
**********
**********

<문제>
*
**
***
****
*****

을 그려보자

class LoopTest2{
    public static void main(String[] args){
    
        for(int row = 0; row<5; row++){
            for(int col = 0; col<=row; col++){    
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

※ 결과값

*
**
***
****
*****


★ 반복문 연습문제 ★

1.갤런을 리턴으로 바꾸는 예제
1갤런부터 100갤런까지 리터에 대한 변환표를 작성
(단 10갤런마다 줄바꿈을 하도록 한다.)

2. 간단한 전자 계산기 프로그램
연산자 : +
숫자1 : 2
숫자2 : 3
결과 : 2+3 = 5
연산자 : *
숫자1 : 2
숫자2 : 3
결과 : 2*3 = 6
연산자 : x
종료...
3. 숫자를 입력받아 합계를 구하는 예제(0을 입력하면 종료)
숫자1:2
숫자2:1
숫자3:4
숫자4:7
...
숫자n:0
합계 : ?
4. 위의 문제를 응용해서 짝수의 합과 홀수의 합을 구하시오.
(단, 입력횟수를 미리 입력받는다.)
입력횟수 : 4
2
3
7
6
짝수의 합 : ?
홀수의 합 : ?
5. 간단한 문자 추측 게임 프로그램을 만드시오.
미리 정답을 정해 놓는다.(예를 들어 k)
a~z까지 생각한 문자 입력 : b
틀렸다.
a~z까지 생각한 문자 입력 : z
틀렸다.
(정답을 맞출때까지)
6. 간단한 도움말 시스템 구축
1. if
2. switch
3. for
4. 종료
번호 선택 : 1
if(조건식) 문장;
1. if
2. switch
3. for
4. 종료
번호 선택 : _
7. "."이 입력될 때까지 키보드 입력을 읽어서 입력된 공백의 갯수를 세고 그 합을 출력하시오.
dlksjf;al alsdjlas   sldkjflaksdj  sdalfjlkj.
8. 
    *
   ***
  *****
*******
*********

9.
    *
   ***
  *****
*******
*********
*******
  *****
   ***
    *


'개발 > Java' 카테고리의 다른 글

[java] 배열 (Array)  (0) 2017.10.19
[java] 클래스 (Class) part.1  (0) 2017.10.18
[java] Dos에서 Java 컴파일 하기  (0) 2017.10.18
[java] 연산자(Operator)  (0) 2017.10.18
[java] 변수(Variable)와 데이터타입(Data Type)  (0) 2017.10.17

+ Recent posts