inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Java로 배우는 자료구조

변수, 배열, 반복문 7

코드의 차이점이 뭔가요 ??

235

허인호

작성한 질문수 1

0

while(j > 0 ) {

if( array[j] > value) {

array[j+1] = array[j]; // 왜 if를 쓰면 안되고, while(j>0 && array[j] > value) 로 하면 되는 것인가.

j--;

}

}

이거와 선생님 코드 의 차이가 뭔가요?? 이대로 하면 , 1,2 입력했을때는 잘 되는대, 그 다음부터는 입력만 하고 출력은 안되내요 ㅠㅠ

java

답변 1

0

김현지

안녕하세요, 허인호님!

질문에 대한 답을 드리자면, while문은 해당 조건이 충족되지 않을 때까지 해당 블록을 계속 반복하여 실행합니다.

질문자님이 개발 환경을 어떻게 설정한지 모르니, 강의 코드로 예를 들겠습니다.

while (j >= 0 && data[j] > tmp)

위의 코드는, j가 양수 또는 0일때 뿐만 아니라 data[j]가 입력받은 정수보다 클 때 실행됩니다.

따라서, 현재 입력된 숫자가 data[j]보다 클 경우에는 실행되지 않습니다.

while(j>=0) {

      if (data[j] > tmp) {...}

}

질문자님이 작성해주신 위의 코드는, j가 양수라면 무조건 while문이 실행되는데, 입력받은 정수가 data[j]보다 클 때 while문을 탈출하는 break 문이 없습니다.

따라서, j가 양수이지만 입력받은 정수가 data[j]보다 클 경우에는 무한루프가 되는 것입니다.

if문을 활용하고 싶으시다면, 입력받은 정수가 data[j]보다 클 때의 분기처리를 해주어야합니다.

else문을 작성하여 break(반복문 완전 탈출) 또는 continue(나머지 코드를 스킵하고 처음으로 돌아가서 반복)를 맞게 작성해주시면 정상 작동할 것입니다.

혹시 궁금하신 점이 있다면 댓글 남겨주세요.

도움이 되었으면 좋겠습니다. :)

연습문제 자료들 어디서 볼 수 있을까요

3

966

0

강의자료 어디서 보나요

0

817

0

변수, 배열, 반복문에서 이중for문

1

857

1

섹션1,섹션2의 연습문제에 대한 코드 공유

0

324

0

교수님이 말씀하신 반복문 수업 끝날 때 말씀해주신 연습문제 답 코드 어딨는지 아시는 분계시나요 도와주세요

0

287

0

소수의 개념을 알겠지만 원리를 모릅니다.. 그냥 외워야 할까요?

0

788

1

강의노트를 못 찾겠습니다 ㅠㅠ

0

645

1

오버라이딩

0

406

1

강의자료는 어디서 볼수있나요??

0

495

1

2-1장 (클래스, 객체, 참조변수 3) 마지막 값이 덮어씌워지는 문제

0

214

0

추상클래스와인터페이스 관련강의

0

219

0

왜 main 함수 안에서 함수를 정의하면 오류가 나는 건가요?

0

4250

1

for구문에서 {}

1

277

2

강의자료 소스코드는 따로 없는건가요?

0

306

1

자바 IDE 선택에 대한 질문입니다.

0

373

1

inner class에 대한 질문

0

247

0

remove(index) 구현 질문

0

337

1

훌륭한 코드를 볼때 마다 감탄스럽습니다.

0

334

0

교수님이 자랑 스럽습니다.

0

209

0

상속 3에 예제 2의 영상이 올라와있어요~

0

215

0

3,4 순서가 바뀌어서 업로드 되어 있습니다

0

184

0

강의 노트는 어디서 확인할 수 있나요?

0

559

3

휼륭한 강의 감사합니다.

2

242

0

add와 remove 메소드를 사용할때, size-1에 대한 질문

0

221

1