
1. while + array
arr = {1, 2, 3, 4, 5}
index = 0,1, 2, 3, 4
0 =< 인덱스 개수 < 길이 = arr.length
0 =< 인덱스 개수 <= 길이-1 = arr.length-1




WhileEx06 - 배열 요소의 합
1. 배열의 선언, 생성, 초기화
2. 반복할 조건식 만들기
i = 인덱스 0부터 arr.length 인덱스 길이 미만
3. 누적, 합계를 원하므로 변수 sum 생성
4. 출력값
- 인덱스 값: i , 0~9
- 배열 안의 값: arr[i] , 1~10
- 배열 안의 총 합: sum += arr[i] , 1+ ~ +10
5. 반복문을 지나면서 i 1씩 증가
Quiz10 - 금액을 간결하게 나눠라
몫 출력 -> 나머지 money 저장 -> 반복
1. 배열이 선언, 생성, 초기화
2. 반복할 조건식 만들기
i = 인덱스 0부터 arr.length 인덱스 길이 미만
3. 출력값
arr[i]: 배열 안의 값, 1000, 500, 100, 50, 10
개수: money를 arr[i]로 나눈 몫
남은 돈: money를 arr[i]로 나눈 나머지
몫은 출력하고 남은 돈만 저장 -> 그 다음 몫 출력,
남은 돈 저장 -> 반복
Quiz11 - 배열의 크기만큼 입력받은 수 저장
1. 배열의 길이 결정 => scanner 사용
2. 길이에 맞는 배열 생성
int [ ] arr = new int [size]
3. 반복할 조건식 만들기
i = 인덱스 0부터 arr.length 인덱스 길이 미만
4. while문 안에서 반복을 돌면서
수들을 입력 받고 -> 순서대로 배열에 저장
= size에 들어간 만큼 scanner로 그 안에 값 넣어줌
int a = scan.nextInt();
a는 배열 안에 들어가는 값 = arr[i]
5. 배열 한꺼번에 출력
Arrays.toString(arr) => [a1, a2, a3, a4...]
WhileEx07 - 최대값, 최소값
1. 배열이 선언, 생성, 초기화
0번째 인덱스 값을 저장 후 다음 인덱스 값과 비교 ->
큰 값을 저장 -> 반복
2. 최대값을 저장할 변수 생성
max = arr[0];
3. 반복할 조건식 만들기
i = 인덱스 0부터 arr.length 인덱스 길이 미만
4. 조건값
배열 값이 현재 max 값보다 큰가?
참이면 max에 그 값을 저장
arr[i] > max? max = arr[i];
5. 반복문을 지나면서 i 1씩 증가
최대값과 반대
1. 배열값이 현재 min 값보다 작은가?
참이면 min에 그 값을 저장
arr[h] < min? min = arr[h];
2. 반복문을 지나면서 h 1씩 증가
( 배열의 인덱스 순서 0, 1, 2, 3.... )
2. 반복문 do ~ while (거의 사용 X)
- 반복문 먼저 실행 -> 조건문
- 결과가 true이든 false이든 무조건 한번은 실행 (while문은 처음 실행 조건이 false라면 실행문이 실행X)
- 조건식의 결과에 상관없이 루프를 반드시 한번 이상 실행시키도록 할 때 사용

while -> 수박수박수박.....
do ~ while -> 박!수박수박수박.....
3. 반복문 for
- 제어조건 (제어변수,평범식,증감)을 한꺼번에 지정
- 정확한 반복 횟수를 알고 있을 때는 for문이 while문보다 유용
- if문과 마찬가지로 조건식은 반드시 boolean타입
- 실행문장이 한줄이면 블록 { }을 생략
3.0.1. for문
for ( 제어 변수(초기값); 조건식; 증감(반복 표현식) ) {
반복할 실행문;
}



ForEx02 - 소수인지 아닌지 판별
1. 정수 입력 받음 => scanner 사용
2. int i = 1 ~ 입력 받은 정수까지 반복
반복문을 지나면서 i 1씩 증가
소수: 1과 자기 자신으로 나누어 떨어지는 수
입력 받은 수가 i = 1, 2, 3, 4... 로 나누었을 때
나머지가 0이면 소수
3. count 변수 생성
자기 자신으로 나누어 떨어진다 = 약수이다
면 카운트를 세겠다.
count ++;
4. 출력
count == 2? 약수가 2개 인가? = 소수이다
3.0.2. for + array


ForEx03 - 100개 크기 배열의 3배수만 저장
1. 100개 크기의 배열 선언, 생성
int [ ] arr = new int[ 100 ];
2. i = index = 0부터 크기-1 미만까지 반복
3. 3의 배수 나타내는 변수 a 생성
4. 배열에 3을 더해가면서 저장함
a += 3; ( a=3, 6, 9, 12....)
arr[i] = a; 배열 값 = a
5. 3의 배수를 저장한 배열 출력
3.0.3. ForEx04 - 배열의 swap
x, y값 바꾸기
인덱스 0번을 랜덤하게 변경하기
임시 저장하는 temp 변수 생성

1. 배열 선언, 생성, 초기화
2. 인덱스 값을 랜덤으로 표현하는 ran 변수 생성
ran 변수는 랜덤 1~9 값인데 범위 지정 중요
인덱스 0값은 항상 변하는 값으로 고정
3. 임시 저장 temp 변수 생성 -> 인덱스 0값 넣기
4. 인덱스 0값 -> 1~9 인덱스 중 하나 랜덤값 넣기
5. 빈 랜덤값에 temp 저장된 값 넣기
6. 결과적으로 temp = 비어 있음
9개의 인덱스 값 중 하나 x값 = 인덱스 0 값
인덱스 0 값 = x값
3.0.4. for문 + for문 중복

- 첫번째 for문 1번부터 실행 후 -> 두번째 for문으로 들어감 -> 두번째 for문 전체 실행
- 나와서 첫번째 for문 2번부터 실행 -> 두번째 for문으로 들어감 -> 두번째 for문 전체 실행
- 반복
- 1-1, 1-2, 1-3, 1-4, 2-1, 2-2, 2-3, 2-4, 3-1, 3-2, 3-3, 3-4, 4-1, 4-2, 4-3, 4-4 순서로 실행됨
첫번째 for문 - 두번째 for문
예시) 구구단


Quiz12 - 5 와 비교 ( 정수를 입력 받아서 구구단 출력 )
첫번째 for문 : 단수 출력
두번째 for문 : 1 ~ 9 출력
4. Quiz

4.0.1. Quiz12 - 1 - 7~100 중 7의 배수
1. int i = 7 ~ 100까지 하나씩 증가
2. if문 사용
i % 7 == 0, i가 7의 배수이면
3. 출력
print 구문 : i + 공백 출력해라
혹은
2. if문 사용
i가 7씩 증가하면서
3. 출력
print 구문: i + 공백 출력해라
Quiz12 - 2 - 1~200 중 9의 배수의 개수
1. int j = 1 ~ 200까지 하나씩 증가
2. j % 9 == 0, j가 9의 배수이면
3. 개수를 출력해야 하기 때문에
count 변수 생성
4. 9의 배수이면 개수를 세라
count++;
5. 출력 count
Quiz12 - 3 - 50~100 두 수 사이의 합
1. int k = 50 ~ 100까지 하나씩 증가
2. 합을 구해야 하기 때문에
sum 변수 생성
3. k가 1씩 증가하면서 계속 자신(k)을 합하라
sum += k;
4. 출력 sum
Quiz12 - 4 A~Z까지 출력(char 사용)
1. char A~Z를 그냥 출력하면 int로 자동 형변환 되므로 char로 바꿔줌
2. 변수 text 생성
3. char text = 'A' ~ 'Z' 까지 text 하나씩 증가
4. 출력 text
Quiz12 - 5 수 입력을 받아 구구단 출력
1. 어떤 수(num)를 입력 받음 => scanner 사용
2. p = 1~9까지 하나씩 증가
3. num * p = int x 생성 ( //처럼 변수 생성 안하고 표시 형식만 바꿔줘도 됨 )
4. 출력

4.0.2. Quiz13
1. 배열 선언, 생성, 초기화
2. int i = 인덱스를 0~길이 미만까지 지정, i 하나씩 증가
3. 랜덤값 생성 1~14 혹은 0~14 둘다 가능 (범위 지정)
왜냐면 아래에서 인덱스를 정할때 처음 선택된 인덱스는 temp에 저장되고 나머지가 랜덤이 돌아가기 때문
4. ForEx04와 같이 변경되어 저장
5. 배열 출력 Arrays.toString
랜덤수 중 0~2인덱스 값을 새로운 배열에 담음
6. 길이가 3인 배열 선언, 생성
7. 인덱스 i = 0~길이 미만, i 하나씩 증가
8. 기존 배열의 인덱스 0,1,2를 새로운 배열의 인덱스 0,1,2에 담음. 오른쪽 -> 왼쪽으로
9. 배열 출력 Arrays.toString
오늘 하루
기억에 남는 부분
- 0 =< 인덱스 개수 < 길이 = arr.length
- for문의 사용 for( int i = 0; i <= 범위; i++) { }
- 배열의 swap은 임시 저장하는 temp 변수를 생성해서 하나씩 넣어가면서 바꿔줌. 결국 temp = 0;
어려운 부분
- scanner 정수를 입력 받아 배열의 길이 정한 후, 배열 값을 scanner로 입력 하기
- array 초기화 하고, 랜덤 값 넣어서 숫자 돌리기
랜덤값 = 그냥 숫자값
배열 안에 넣을 때 그 숫자값을 배열의 인덱스 값(arr[ran])으로 넣어서 배열의 값이 나오는 것임.
- 소수인지 아닌지 판별, count를 어떻게 써야 하는지?
문제 해결 부분
- array + random 이해 완료
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 탈출문(break, continue, return), 무한루프 while(for), array (0) | 2022.09.28 |
---|---|
[Java] for, 중복 for, 향상된 for(배열 담기) (0) | 2022.09.27 |
[Java] 반복문(while) 01 (0) | 2022.09.23 |
[Java] 랜덤생성, array, 조건문(if, switch~case) (0) | 2022.09.23 |
[Java] 변수(타입 및 형변환), 연산자, 입/출력, 스캐너 (0) | 2022.09.21 |