while

사용자가 원하는 만큼 명령들을 여러번 실행하는 제어 구조
특정 조건이 만족되는 동안 명령을 계속적으로 실행


while(조건문)

{

실행문;

}


int i=0;    // 초기

int sum=0;

while(i<5)    // 조건

{

i++;    // 증감

System.out.print("정수값을 입력하시오 : ");

int num = sc.nextInt();

sum += num;

}


System.out.println("입력한 5개의 정수의 합 : " + sum);




do - while

do와 while이 짝을 이루어 사용. 조건문이 실행문 뒤에 위치하여 1번 실행 후 조건을 물어본다

조건이 거짓일지라도 1번은 무조건 실행되는 제어문


do {

실행문;

}

while(조건문);


int num = 0;

do {

System.out.print("number? ");

num = sc.nextInt();

if(num > 0)

{

System.out.println("positive integer");

}

else if(num < 0)

{

System.out.println("negative number");

}

}

while(num != 0);

System.out.println("End");




for

가장 보편적인 반복문으로 다른 반복문에 비해 가독성이 높고 상대적으로 문법이 쉽다. 초기, 조건, 증감문을 한번에 선언하여 사용


for(초기; 조건; 증감)

{    

실행문;

}


int sum=0;

System.out.print("n의 수를 입력 : ");

int num = sc.nextInt();

for(int i=1; i<=num; i++)

{

if(i%2==0)

{

sum+=i;

}

}

System.out.println("짝수들만의 합은:" + sum);



중첩 for : for문 안에 for문이 들어간 형태로 내부의 명령을 외부의 횟수만큼 반복하게 되는 구조


for (초기값; 조건값; 증감값)

{

for (초기값; 조건값; 증감값)

{

실행코드;

}

}


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

int input = sc.nextInt();

for(int j=1;j<=input;j++)

{

for(int i=0;i<j;i++)

{

System.out.print("*");

}

System.out.println();

}



int sum=0, i=0, num=0;

while(sum < 100)

{

i++;

if(i%2==1)

{

sum+=i;

num++;

}

else

{

sum-=i;

num++;

}

}


or


int num=1, sum=0;

for(int i=0; i<num; i++)

{

sum += (i%2==0) ? i*-1 : i ;

num++;

if(sum>=100)

{

num=i;

break;

}

}

System.out.println(num);




무한 루프

반복 횟수가 미리 정해져 있지 않고, 무한히 반복되는 루프 - while문을 많이 사용


for(;;)

{

실행문;

}


or


while(true)

{

실행문;

}


break : 반복문을 빠져나가는 구문
continue : 반복문을 다시 실행 (for문의 경우 증감식으로 이동)


while(true)

{

System.out.println("\n=== 계산기 프로그램 ===\n");

System.out.print("연산자 입력 (+, -, *, / (q:종료)) : ");

char op = sc.next().charAt(0);

if(op == 'q')

{

break;

}

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

int num1 = sc.nextInt();

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

int num2 = sc.nextInt();

System.out.println("\n====== 결 과 ======\n");

switch(op)

{

case '+':

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

break;

case '-':

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

break;

case '*':

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

break;

case '/':

System.out.println(num1 + " / " + num2 + " = " + ((double)num1/num2));

break;

}

}




난수 (Random class)

임의의 값 또는 무작위로 만들어지는 알 수 없는 값


Random r = new Random( );

System.out.println(r.nextInt(100));    // 0~99 까지 중 임의의 수를 출력


Random r = new Random();


System.out.println("0 ~ 9 까지의 랜덤 수 : " + r.nextInt(10));

System.out.println("1 ~ 10 까지의 랜덤 수 : " + (r.nextInt(10)+1)); 

System.out.println("20 ~ 35 까지의 랜덤 수 : " + (r.nextInt(16)+20));

System.out.println("0 또는 1 : " + r.nextInt(2));



switch

변수의 값을 case에서 찾아 명령을 수행하는 조건문
해당하는 값이 없을 경우에는 default의 명령문을 수행


switch(변수)

{

case 1 : 실행문1; // 변수 안에 있는 값이 1일때

break;

case 2 : 실행문2; // 변수 안에 있는 값이 2일때

break;

default : 실행문3; // 변수 안에 값이 case 문에 없을 경우에 실행(else와 같음)


}


System.out.println("*********주메뉴*********");

System.out.println("a.불고기버거 -------- 5000");

System.out.println("b.새우버거 --------- 4000");

System.out.println("c.치킨버거 --------- 4500");

System.out.println("d.한우버거 -------- 10000");

System.out.println("e.디버거 ---------- 7000");

System.out.println("**********************");

System.out.println("********사이드메뉴********");

System.out.println("1.콜라 ------------ 1500");

System.out.println("2.사이다 ----------- 1500");

System.out.println("3.밀크쉐이크 -------- 2500");

System.out.println("4.레드불 ----------- 3000");

System.out.println("***********************");

System.out.print("주메뉴 : ");

char main = sc.next().charAt(0);

String mainMenu=null;

int price=0;

switch(main)

{

case 'a':

mainMenu = "불고기버거";

price+=5000;

break;

case 'b':

mainMenu = "새우버거";

price+=4000;

break;

case 'c':

mainMenu = "치킨버거";

price+=4500;

break;

case 'd':

mainMenu = "한우버거";

price+=10000;

break;

case 'e':

mainMenu = "디버거";

price+=7000;

break;

default:

System.out.println("번호를 잘못 누르셨습니다. 영업을 종료합니다.");

return;

}

System.out.print("사이드메뉴 : ");

int side = sc.nextInt();

String sideMenu=null;

switch(side)

{

case 1:

sideMenu = "콜라";

price+=1500;

break;

case 2:

sideMenu = "사이다";

price+=1500;

break;

case 3:

sideMenu = "밀크쉐이크";

price+=2500;

break;

case 4:

sideMenu = "레드불";

price+=3000;

break;

default:

System.out.println("번호를 잘못 누르셨습니다. 영업을 종료합니다.");

return;

}

System.out.println(mainMenu + ", " + sideMenu + "은 총 " + price + "원입니다");



제어문

순차적인 흐름을 조건에 따라 통제하는 문법. 사용자의 선택에 따라 프로그램이 동작


- 종류
조건문 : if, if else, else if
반복문 : while, do while, for
선택문 : switch case
흐름변경문 : continue, break


if

조건식의 결과 값이 참(true)면 {  } 안에 있는 코드를 실행 (false면 실행 안함)


if ( 조건식 )

{

실행코드

}


System.out.println("계산기 프로그램 ver 1.0");

System.out.print("연산자를 입력하세요(+,-,*,/) : ");

char op = sc.next().charAt(0);

System.out.print("첫번째 수 입력 : ");

int num1 = sc.nextInt();

System.out.print("두번째 수 입력 : ");

int num2 = sc.nextInt();

if(op == '+')

{

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

}

if(op == '-')

{

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

}

if(op == '*')

{

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

}

if(op == '/')

{

System.out.println(num1 + "/" + num2 + "=" + ((double)num1/num2));

}




if - else

둘 중 한개를 선택하는 조건문으로 조건이 참인 경우와 거짓인 경우에 수행하는 명령이 다르다
if문의 조건이 만족하지 못하면 else문이 수행
else에는 조건식을 사용할 수 없음


if ( 조건식 )

{

실행코드 1

}

else

{

실행코드 2

}


int count=0;

System.out.println("첫번째 퀴즈입니다");

System.out.print("사과는 영어로 무엇일까요?(1.Apple / 2.잡스): ");

int select1 = sc.nextInt();

if(select1 == 1)

{

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

count++;

}

else

{

System.out.println("땡!");

}

System.out.println("두번째 퀴즈입니다");

System.out.print("바나나는 길어 길으면 기차 기차는?(1.빨라 / 2.비싸): ");

int select2 = sc.nextInt();

if(select2 == 1)

{

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

count++;

}

else

{

System.out.println("땡!");

}

System.out.println("총 " + count + "문제를 맞추셨습니다");




중첩 if

if문 문법을 중첩으로 사용이 가능


if ( 조건문1 )

{

if ( 조건문2 )

{

실행문1;

}

else

{

실행문2;

}

}

else

{

실행문3;

}


System.out.println("= = = = = = 심리 테스트 v1.0 = = = = = =");

System.out.println();

System.out.print("당신은 술을 좋아하십니까?(1.yes,2.no) ");

int test = sc.nextInt();

if(test == 1)

{

System.out.print("당신은 담배를 피웁니까?(1.yes,2.no) ");

test = sc.nextInt();

if(test == 1)

{

System.out.println("담배는 건강에 좋지 않습니다!!!");

}

else

{

System.out.println("담배는 피우지 않아도 술때문에 간이 위험해요!");

}

}

else

{

System.out.print("당신은 이성친구가 있습니까?(1.yes,2.no) ");

test = sc.nextInt();

if(test == 1)

{

System.out.println("올.........");

}

else

{

System.out.println("...힘내세요.. 무슨낙으로 사시나요..?");

}

}




else if

다중 조건을 줄 수 있는 문법


if ( 조건문 1 )

{

실행문 1;

}

else if ( 조건문 2)

{

실행문 2;

}

...

else if ( 조건문 n)

{

실행문 n;

}

else

{

실행문;

}


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

char ch = sc.next().charAt(0);

System.out.println("==== 결 과 ====");

// a : 97 , A : 65

// z : 122, Z : 90

if('a'<=ch && ch<='z')

{

System.out.println("소문자를 입력 하였습니다.");

System.out.println("대문자로 변환 : " + (char)(ch-32));

}

else if('A'<=ch && ch<='Z')

{

System.out.println("대문자를 입력 하였습니다.");

System.out.println("소문자로 변환 : " + (char)(ch+32));

}

else

{

System.out.println("잘못 입력하셨습니다 영문자를 입력해주세요");

}



+ Recent posts