주니 개발 도서관

자바(JAVA)

(4) 중첩 반복문, 배열

주니홍 2022. 6. 10. 20:08
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.lengthi++ ) {
    //  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