섹션 7 전달값 질문입니다!
268
작성한 질문수 11
1. 6분 44초에 int result = 1; 이라고 작성해주셨는데이 의미가 궁금합니다! (result가 무엇을 의미하는지 궁금합니당 만약 결과값이라면 왜 1을 써야 하나요?)
6분 59초에 for i 를 쓰셨는데 여기서 i는 무얼 의미하는 건지 궁금합니다!
앞의 int result가 이해가 되지 않아 result = result * number;의 의미도 궁금합니다!
답변 2
0
안녕하세요?
추가 답변 드립니다.
말씀하신대로 number 가 2 이고 exponent 가 3 일 때 2 를 3 번 곱하므로 2 2 2 = 8 이 됩니다. i 가 3 보다 작다는 조건을 만족하는 동안이므로 0, 1, 2, 3 이 아닌 0, 1, 2 까지 3 회에 걸쳐 (= 3번 반복하여) 현재의 result 에다가 number 를 곱한 값을 다시 result 에 저장하게 됩니다. 그래서 처음에는 2, 두번째는 4, 세번째는 8 이 되며 3번 반복이 끝나므로 result 에는 8 이 저장되어 있는 상태가 되지요 😊
i 는 반복 횟수를 지정하기 위한 목적으로 사용되었으며 exponent 가 되는 것은 아닙니다. exponent 로 주어진 값보다 작다는 조건을 만족하는 동안 1씩 키워가면서 횟수를 세는 정도의 용도로 이해해주시면 되겠습니다.
감사합니다.
0
안녕하세요?
하나씩 답변을 드리겠습니다 😊
1. result 에 1 을 설정하는 이유
int result = 1;result 변수는 이름에서 의미하는 것처럼 결과가 저장되는 변수입니다. 거듭제곱 연산을 위해 전달받은 number 와 exponent 의 값에 따라 반복문을 수행하며 result 를 계속해서 업데이트 하게 되는 것인데요. 만약 number 가 2 고 exponent 가 3 이라면 2 를 3 번 곱하니 2 x 2 x 2 = 8 이 되겠지요. 즉 result 변수에 8 이 저장되게끔 하는 것이 이 메소드의 목표입니다.
처음 이 result 에 1 이 들어가있었다고 하면 반복문을 수행할 때마다 값이 이렇게 바뀔 거에요.
result | number | 업데이트 된 result
1회차 1 2 1 x 2 = 2 (2가 다음 회차로 넘어갑니다)
2회차 2 2 2 x 2 = 4 (4가 다음 회차로 넘어갑니다)
3회차 4 2 4 x 2 = 8 (다음 회차는 없네요)결국 업데이트 된 result 는 8 이 저장되는 것이죠.
모든 수에 1 을 곱하면 그 수가 그대로 남게 됩니다. 2 x 1 = 2 이며 4 x 1 = 4 가 되는 것처럼요. 그래서 result 에 처음에는 1을 넣어줬습니다. 만약 1 이 아닌 0 이 들어간다면 어땠을까요?
result | number | 업데이트 된 result
1회차 0 2 0 x 2 = 0
2회차 0 2 0 x 2 = 0
3회차 0 2 0 x 2 = 0엉뚱한 0 이라는 값이 result 변수에 저장되겠네요 😅
2. for 문의 i 역할
반복문 중에서 for 분은 일반적으로 인덱스(index) 의 첫글자를 딴 i 라고 하는 변수의 값을 증가시켜가며 반복을 수행합니다.
5회를 반복한다면 다음과 같이 할 수 있겠네요.
for (int i = 0; i < 5; i++) {
... 반복 작업 ...
}그러면 반복이 일어날 때마다 i++ 이라는 증감 연산을 통해 i 는 0, 1, 2, 3, 4 와 같이 순차적으로 커지다가 5 가 되었을 때는 for 문 가운데 있는 조건 i < 5 를 만족하지 않으므로 더 이상 반복문을 수행하지 않고 탈출하게 되는 거에요. 주어진 횟수만큼 반복을 올바로 할 수 있도록 역할을 수행하는 것이 i 이며, 배열을 순회하는 경우라면 coffees[0] 와 같이 대괄호 속에 인덱스를 넣어서 값에 접근할 수 있으므로 반복문 속에서 i 를 0 위치에 넣어서 활용하기도 한답니다.
이렇게 사용해볼 수 있겠네요.
String coffees[] = new String[4];
coffees[0] = "아메리카노"; // 0 부터 시작
coffees[1] = "카페모카";
coffees[2] = "라떼";
coffees[3] = "카푸치노";
for (int i = 0; i < 4 i++) {
System.out.println(coffees[i]);
}
3번 질문에 대한 답변은 1번의 답변 내용에 포함되어 있답니다 😊
천천히 읽어보시고 그래도 이해가 가지 않으신다면 다시 질문 남겨주시면 다른 방법으로 설명 드리겠습니다.
감사합니다.
0
친절한 답변 감사드립니다!!
1번의 경우 추가적으로 궁금한 사항이 있습니다. number가 2이고, exponent가 3이라면 2*2*2 =8이 되는 게 이 메소드의 목표인 것까지 이해가 되었습니다.
i가 3보다 작다는 조건을 만족하는 동안(0, 1, 2, 3까지) result값에다가 number를 곱해준다고 하셨습니다. result 즉 결과가 8인데 왜 result number를 진행해야 하는지 궁금합니다.
추가적으로 for i에서 i가 index를 의미하는 거까지 이해가 되었습니다. 그렇다면 여기서 변수 i는 exponent라고 봐도 될까요?
3차원 배열의 인덱스 해석 순서와 3중 반복문 순회 메커니즘에 대해 질문드립니다.
0
26
1
자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?
1
177
2
static이 뭐였는지 기억이 안나요 ㅜㅜ
0
140
2
Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의
0
91
1
사고력 키우는 법이 어떤게 있나요?
0
116
2
getter setter
0
118
2
섹션9. 66 메소드 오버로딩 시 질문이 있습니다.
0
93
1
안녕하세요 갑자기 프로그램 에러가 떠서 안되네요
0
95
2
변수 이름짓는법
0
129
2
intelli J 실행오류
0
128
2
혹시 이건 수학적 사고가 부족한 걸까요?
0
169
2
영상이 재생이 안됩니다.
0
177
3
이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.
0
125
2
응용이 어렵습니다.
0
220
2
IntelliJ가 보이지 않습니다.
0
203
3
JDK 버전 문의
0
135
2
BlackBox 파일 내에서 메소드 정의
0
142
1
동기화
0
132
2
Iterator 문의
0
109
1
코드 순서 문의
0
147
1
클래스 메소드
0
158
2
Quiz_05 관련 질문드립니다 !
0
128
2
다운로드가 안됩니다
0
172
2
다형성
0
126
2





