0610 정리
중첩 반복문
반복문 안에 반복문을 사용하는 것
구구단으로 표현해보자
2 x 1 = 2
2 x 2 = 4
.
.
9 x 9 = 81
A x B = (A*B)
- B( 1 ~ 9 )에 들어갈 반복 총 9번
- ( B ) * A ( 2 ~ 9 ) 에 들어갈 반복 총 8번
반복을 하기위한 메인출력물(구구단)을 출력해줄 부분을 먼저 작성
메인출력물의 반복을 반복해줄 부분을 그후에 감싸는 형태로 작성
** 필요에 있어서 바깥에서 안으로 작성하는 순서도 필요할 것이다.
- 중첩반복문은 머리로 계산하기엔 한계가 있을 것이다.
항상 디버깅표**와 함께 작성해보는 버릇을 가져보자
별 찍기
위 코드는 정수입력을 받은 만큼의 정수만큼 아래의 별 모양을 찍어주는 코드
사용예시 및 설명
- 첫번째 입력은 잘못된 정수 0을 입력, 다시! 출력 이후에 다시 입력 (무한반복 가능)
- 두번째 입력은 5를 입력하여 별 모양 출력
결과
정수입력 : 0
다시!
정수입력 : 5
*****
****
***
**
*
코드 설명
별 찍기 이외의 코드
- 정수입력시 0 이하의 수를 적는다면 다시 입력하는데
몇번 틀릴지 알 수 없기때문에 무한반복문을 사용 - 잘 입력할 수 있도록 제어문(if)로 0 이하의 수를 적으면 "다시!" 출력
무한반복문 으로 정상입력 할 때까지 무한 입력 해야함 - 잘 입력을 받아 별찍기가 완료되었다면 종료 조건문을 while문 마지막에 만들어
잘 입력받은 수가 들어올수 있는 조건을 만든 종료조건을 만든 후 break;
별 찍기 (디버깅표**로 표현)
위의 모양을 나타내기위해선, 입력받은 정수의 갯수만큼의
가로별 + 세로별을 출력할 중첩반복문이 필요하다
별 찍기 기본코드로 입력받은 갯수 만큼 가로별 세로별을 만들어 놓고
이후 * 대신 " " 부분을 넣어주기위한 조건문을 만들어 보자
a(3 입력) | i | i <= a | j | j <= a | " "출력 조건 a |
* 출력 조건b |
출력 |
3 | 1 | T | 1 | T | F | T | * |
2 | T | F | T | * | |||
3 | T | F | T | * | |||
4 | F | (줄바꿈) | |||||
3 | 2 | T | 1 | T | T | F | " " |
2 | T | F | T | * | |||
3 | T | F | T | * | |||
4 | F | (줄바꿈) | |||||
3 | 3 | T | 1 | T | T | F | " " |
2 | T | T | F | " " | |||
3 | T | F | T | * | |||
4 | F | ||||||
3 | 4 | F(종료) |
디버깅표를 보며 어떤 경우에 " " (공백)을 표시하는지, * (별) 을 표시하는지 생각해 봐야한다
" " 공백에 넣을 조건을 찾아보자
- i - 1 <= j
처음에 찾은 값 i - 1 가 j 와 같거나 작은수들이 " " 이 나오는구나가 먼저 보였었음 - i < j
위의 값을 변형해봄 어차피 -1의 값을 빼면서 <= 를 < 로 바꿔주면 같은 공식이 나온다
ㅡ> 최대한 식을 간단하게 바꾸는 것이 중요 ㅡ> " 유지보수 "에 좋다
별 ( * )을 표시해줄 조건을 찾아보자
- i < j 으로 " " 표시하고 남은 j 값을 * 로 표시되면 된다
- " "을 표시하고 남은 값을 모두 * 로 표시하면되기에 else로 마무리
조건식 a | i < j |
조건식 b | else |
이후 결과를 콘솔에서 확인하여 원하는 결과가 나오지 않는다면
그 결과의 디버깅표를 작성하여 수정한다
배열
서로 관련된 데이터를 한 공간에서 관리하기 위해 사용
ex) 학생부
배열의 3요소
- 서로 관련된 데이터
- 서로 동일한 자료형
- 몇개인지 분명히 알아야 한다
배열의 기본식
int [ ] stu = { 70 , 80 , 90 };
- 자료형 [ ] 식별자 = { 자료형 값, 자료형 값, 자료형의 값 };
- index (인덱스) 배열의 순서번호 ** 0부터 시작함
위의 배열중 80의 값을 가져오기위해선
식별자 [ index 번호 ]; 를 사용하면 된다
stu [ 1 ]; // 0부터 시작하기 때문에 80의 index번호는 1 이다
배열에 입력을 받아 저장하고 싶을때, 미리 공간을 확보해둬야 한다
int [ ] arr = new int [ ? ];
- 자료형 [ ] 식별자 = new 자료형 [ ? ];
- ? 에는 배열에 넣어놓은 공간의 개수 (길이)
- ? 의 숫자를 입력하면 초기화를 디폴트로 해준다
- 초기화 된 값은 0 이다
arr . length
- 배열 arr 의 길이만큼의 int값을 나타내주는 값
- for문의 조건식에 사용하기 좋다
- for ( int i = 0; i < arr . length; i++ ) { // 배열의 개수(길이)만큼만 반복한다
배열을 이용한 for문
for문은 배열을 이용하기 용이하다.
Point 설명
int cnt
- 배열에 넣을 수를 따로 빼두고, 코드를 보고 사용자가 바꾸기 용이 하도록 만든 변수 "유지보수"
if (arr [ i ] < 0 || 100 < arr [ i ] ) { // 입력값이 원하는 값이 아닌 부분을 설정한 조건문
- 입력한 값이 0 ~ 100 사이가 아니면 다시 입력하도록 만들기위해 만든 조건문
- continue; 만 써두는 것이 아닌 왜 다시 입력을 해야하는지 설명해줘야 좋다 "유지보수"
- 이런 조건문을 만들었을 땐 항상 경계값 검사**를 해본다 ( 입력값 = 0, 100 ,1 ,99, -1, 101 ... )
i ++;
- for ( int i = 0; i < arr.length; i++ ) {
// for문으로 이렇게 나타낼 수 있는 것을 무한반복문(while)로 사용하기 위해서
무한반복문을 사용하기위해 int i = 0; 을 밖에 초기화고, i++; 를 while안에 사용하여
for문의 종료 조건식인 i < arr.length 를 조건문( if ) 으로 만든 후
break; 넣어 while문으로 풀어낸 것
Ctrl + Space bar로 함수() or 키워드 사용시 읽는 법
초록 구슬의 크기비교
- 큰 구슬은 함수() 즉, 메소드를 나타내고 작은 구슬은 키워드를 나타낸다
읽는 법
- 함수() or 키워드 : " 반환값 " - 제작자
ex) stu . length 를 사용하면 " 반환값 " 으로 int 값을 준다 - int [ ] 에 있는 키워드이다
'자바(JAVA)' 카테고리의 다른 글
(주말) 영상과제 (0) | 2022.06.13 |
---|---|
0607~0610 Exception(오류) 정리 (0) | 2022.06.11 |
(3) 반복문 (0) | 2022.06.09 |
(2) 연산자와 조건문 (0) | 2022.06.08 |
(1) 자료형, 변수, 연산자 (기초) (0) | 2022.06.07 |