전체 방문자
오늘
어제
21종
종이의 코딩 공부방
21종
  • 분류 전체보기 (171)
    • JAVA (64)
    • Springboot (46)
      • 블로그만들기 (45)
    • Database (60)
      • Oracle (60)
    • 프로젝트 3 (CELOVER) (0)
    • 개발서버 구축 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
21종

종이의 코딩 공부방

JAVA

[자바/JAVA] 프로그래밍 - 제어문 (반복문 for),랜덤 값 생성(Math.random())

2023. 5. 30. 18:48

반복문

프로그램 흐름을 제어하는 제어문 중 하나

어떤 실행코드를 반복적으로 수행시켜줌

 

크게 두 종류로 나뉨 (for문 / while문(do-while문))

 

 

for문

 

[표현법]

for(초기식; 조건식; 증감식){          // 반복 횟수를 지정하기 위해 제시하는 것들

반복적으로 실행시키고자 하는 구문;

 

}

- 초기식 : 반복문이 수행될 때 "처음에 단 한번만 실행되는 구문"

(보통 반복문 안에서 사용될 변수를 선언 및 초기화 하는 구문)

 

- 조건식 : "반복문이 수행될 조건"을 작성하는 구문

조건식이 true일 경우 해당 구문을 실행

조건식이 false가 되는 순간 반복을 멈추고 빠져나옴

(보통 초기식에 제시된 변수를 가지고 조건식을 작성한다.)

 

- 증감식 : 반복문을 제어하는 변수 값을 증감 시키는 구문

(보통 초기식에 제시된 변수를 가지고 증감연산자(++, --)

 


예제1) "안녕하세요"를 5번 반복해서 실행하기

반복문을 사용하지 않는다면 ?

System.out.println("안녕하세요");
System.out.println("안녕하세요");
System.out.println("안녕하세요");
System.out.println("안녕하세요");
System.out.println("안녕하세요");

 

for 반복문을 사용한다면 ? => 매우간단해진다.

for(int i = 1; i <= 5; i++) {	// i값이 1에서 부터 5까지 매번 1씩 증가하는 동안 반복 수행 (1,2,3,4,5 => 5회 수행)
    // 반복할 코드
    System.out.println("안녕하세요");
}

예제2)
// 1부터 5까지 출력
// for문
for(int i = 1; i <= 5; i++) {
    System.out.println(i);
}

// 1 2 3 4 5 (사이사이 공백을 넣어서)

for(int i = 1; i <=5; i++) {
    System.out.print(i + " ");

반대로 5 4 3 2 1 을 출력하고 싶다면?

public void method3() {
    // 5 4 3 2 1
    for(int i = 5; i > 0; i--) {
        System.out.print(i + " ");
    }
}

예제3)
// 1부터 10까지의 홀수만을 입력
// 1 3 5 7 9
방법 1.
for(int i = 1; i <= 10; i += 2) {	// i값이 1에서부터 9까지 매번 2씩 증가되는 동안 반복 수행 (1,3,5,7,9 => 총 5회)
    System.out.print(i + " ");
}

방법 2.
for(int i = 1; i <= 10; i++) {	// i값이 1부터 10까지 매번 1씩 증가되는 동안 반복 수행(10번)
    if(i % 2 == 1) {
        System.out.print(i + " ");
	}
}

예제4)
// 1 2 3 4 ... 8 9 10
단 int i = 1 고정
for(int i = 0; i <= 9; i++) {
    System.out.print( i + 1 + " ");
}

예제5)
1에서부터 10까지의 총합계

방법1.

int sum 1 + 2 + 3 + ... + 8 + 9 + 10;

방법2.

int sum = 0;
sum += 1; => sum + sum + 1; 0 + 1
sum += 2; => sum + sum + 2; 0 + 1 + 2
sum += 3; => sum + sum + 3; 0 + 1 + 2 + 3
int sum = 0;
for(int i = 1; i <= 10; i++ ) {
    sum += i;	// 누적합
}
System.out.println("1부터 10까지의 합 : " + sum);

예제6) 사용자에게 값을 입력 받아 1부터 입력받은 수까지의 합계 출력
/*
 * int sum = 0;
 * 
 * sum += 1;
 * sum += 2;
 * ...
 * sum += i
 */

Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하세요");
int num = sc.nextInt();

if(num > 0) {
    // 누적합
    // 1. sum 변수만들기
    int sum = 0;
    // 2. for문 돌리기
    for(int i = 1; i <= num; i++) {
        // 누적합 공식
        sum += i;
    }
    System.out.println("1부터 " + num + "까지의 합 : " + sum);
}else {
    System.out.println("잘못입력했어");			
}
sc.close();

예제7) 1에서 부터 어떤 랜덤값(1~10 사이의 랜덤값) 까지의 총 합계 구해보기

 

랜덤값 호출하는 법

더보기

 * java.lang.Math 클래스에서 제공하는 random() 메소드를 호출해서
 * 매번 다른 랜덤값을 얻어 낼 수 있음!!
 * math.random(); 이런식으로 호춣 => 0.0 ~ 0.999999 사이의 랜덤값 발생
 *  (0.0 <=  <1.0)

Math.random() 사용법

int random = Math.random();	// double 형이라서 안됨.. 강제 변환해야됨
		0.0 이상 1.0 미만 => 0.0 ~ 0.999999
int random = Math.random() * 10;
		0.0 이상 10.0 미만 => 0.0 ~ 9.99999
int random =Math.random() * 10 + 1;
		1.0 이상 11.0 미만 => 1.0 ~ 10.99999
int random = (int)(Math.random() * 10 + 1);	// 시작수는 더하고 얻고 싶은 갯수를 곱한다.
		1 이상 11 미만 => 1 ~ 10
int random = (int)(Math.random() * 10 + 1);	// 시작수는 더하고 얻고 싶은 갯수를 곱한다.
System.out.println("1~10 사이의 랜덤값 : " + random);

// 누적합 구하는 방법
// 1. sum 변수만들기
int sum = 0;
// 2. for문 구하기
for(int i = 1; i <= random ;i++) {
    // 누적합 공식
    sum += i;
}
// 1부터 random 까지의 합계
System.out.println(sum);

예제8) Hello에서 각 인덱스별 문자를 뽑아서 출력

* H => str.charAt(0);
* e => str.charAt(1);
* l => str.charAt(2);
* l => str.charAt(3);
* o => str.charAt(4);

for(int i = 0; i <= 4; i ++) {
    System.out.println(str.charAt(i));
}

그렇다면 사용자에게 받은 문자를 인덱스별 문자를 뽑아서 출력하는 방법은 ?

 

apple의 길이 : 5글자

01234

 

strawberry : 10글자

0123456789

 

kiwi : 4글자

0123

 

ㅇㅎ! 마지막 인덱스는 항상 (문자열의 길이 -1) 이구나..

추출하고자 하는 인덱스값이 (문자열의 길이 -1) 까지 매번 1씩 증가

Scanner sc = new Scanner(System.in);
System.out.print("문자열 입력 : ");
String str = sc.nextLine();
System.out.println("문자열의 길이 : " + str.length());

for(int i = 0; i < str.length(); i++) {
    System.out.println(str.charAt(i));
}
sc.close();

예제9) 구구단 2단 출력

2 x 1 = 2

2 x 2 = 4

2 x 3 = 6

...

2 x 8 = 16

2 x 9 = 18

for(int i = 1; i < 10; i++) {
	System.out.println("2 x " + i + " = " + 2 * i);
    System.out.printf("%d x %d = %d\n",2,i,2*i);
}

예제10) 사용자에게 단을 입력 받아 구구단 출력
int dan;
2~9 사이의 정수를 입력 => 가이드 문구
다른숫자를 입력했을 경우 : 2~9 사이의 숫자를 입력해야 됩니다. 잘못입력하셨습니다.
Scanner sc = new Scanner(System.in);
System.out.print("단을 입력하세요.(2 ~ 9 사이 정수)");
int dan = sc.nextInt();

if(dan > 1 && dan < 10) {
    for(int i = 1; i < 10; i ++) {
        System.out.printf("%d x %d = %d\n",dan,i,dan*i);
    }
}else {
    System.out.println("2 ~ 9 사이의 숫자를 입력해야 됩니다. 잘못입력하셨습니다.");
}

예제11) 2부터 9사이의 랜덤값 발생 시켜서 랜덤단 출력하기
int dan = (int)(Math.random() * 8 + 2);	// 2가 시작수, 시작수로 부터 몇개의 랜덤값 발생시킬지 곱하면 된다.
System.out.println("=====" + dan + "단=====");
for(int i = 1; i < 10; i++) {
    System.out.printf("%d x %d = %d\n",dan,i,dan*i);
}

이중반복문

예제12)
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
출력하기
for(int j = 1; j < 4; j ++) {
    for(int i = 1; i < 6; i++) {
        System.out.print(i + " ");
    }
    System.out.println();
}

예제13)
****
****
****
****
출력하기
for(int j = 1; j <= 4; j++) {	// 행은 1~4 까지 반복 => 바깥쪽 for 문 
    for(int i = 0; i < 4; i++) {	// 매 행 고정일 때 열은 1~4까지 반복 => 안쪽 for 문
        System.out.print("*");
    }
    System.out.println();

예제14)
1*** => 1행 1열일때 1
*2** => 2행 2열일때 2
**3* => 3행 3열일떼 3
***4 => 4행 4열일때 4
for(int j = 1; j < 5; j++) {	// 행 
    for(int i = 1; i < 5; i++) {	// 열
        if(j == i) {
            System.out.print(i);
        }else {
            System.out.print("*");				
        }
    }
    System.out.println();
}

예제15) 구구단 2단부터 9단까지 출력하기
for(int j = 2; j < 10; j++) {
    for(int i = 1; i < 10; i++) {
        System.out.printf("%d x %d = %d\n",j,i,j*i);
    }
    System.out.println();

좀 더 보기 좋게 하려면 ?

for(int j = 2; j < 10; j++) {
    for(int i = 1; i < 10; i++) {
        System.out.printf("%d x %d = %d\t",i,j,j*i);
    }
    System.out.println();
}

마지막으로 초기식 조건식 증감식은 생략이 가능하다.

for( ; ; ) {	//조건 생략시 기본적으로 true 인식 => 무한반복문
    System.out.println("안녕");
}

 

    'JAVA' 카테고리의 다른 글
    • [자바/JAVA] 프로그래밍 - 제어문 (반복문 while)
    • [자바/JAVA] 프로그래밍 - Operator 실습 예제
    • [자바/JAVA] 프로그래밍 - 제어문 (조건문 Switch)
    • [자바/JAVA] 프로그래밍 - 제어문 (조건문 if - else if - else)
    21종
    21종
    코딩 공부한 것 정리하려고 만든 블로그

    티스토리툴바