미니멜로디

자바 제어문 - 반복문 while, do while, for 그리고 난수 본문

프로그래밍/자바

자바 제어문 - 반복문 while, do while, for 그리고 난수

미니멜로디 2018.02.19 00:47

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));



0 Comments
댓글쓰기 폼