inflearn logo
강의

Course

Instructor

Kim Young-han's Java Tutorial - Your First Step into Java with Code

Array Refactoring

배열에 대한 질문

461

yupbuddy

23 asked

0

안녕하세요 강사님 배열에 대해서 정말 이해하기 쉽게 알려주셔서 정말 감사드립니다!

students[0] = 90;

students[1] = 80;

students[2] = 70;

students[3] = 60;

students[4] = 50;

이 선언문을 for문을 활용해서

students[i]가 이전의 값을 계속 참조해서 10씩 증가

즉,

students[0] = 60;

students[1] = 70;

students[2] = 80;

students[3] = 90;

students[4] = 100;

이렇게 응용한 코드를 작성해보려고 했는데

해당코드가 리펙토링이 잘 된 코드인지 컨펌을 받고 싶습니다.스크린샷 2023-12-05 오후 10.51.25.png

java 객체지향

Answer 2

2

OMG

안녕하세요. 옙버디님, 공식 서포터즈 OMG입니다.

배열의 데이터를 선언과 동시에 초기화하지 않고 첫번째 데이터(60)와 고정으로 증가하는 값(10)을 기반으로 리펙토링하려는 것 같습니다 😀

 

그러한 의도라면 올리신 코드처럼 작성하여도 무방하지만 리펙토링은 강의에서 영한님이 설명해주시지만 기존의 코드 기능은 유지하면서 내부 구조를 개선하여 가독성을 높여야 하지만

 

출력 시 배열의 시작 인덱스가 0이 아닌 1로 시작하는 점(=코드 기능은 유지X)

image

인덱스의 범위가 배열의 길이로의 조건이 중복되는 점(=내부 구조를 개선 X)

image

Condition 'i < students.length' is always 'true' when reached

조건 'i < students.length'는 도달했을 때 항상 '참(true)'이다.

for문의 조건식 부분에 이미 인덱스는 배열의 길이보다 작을 때의 조건이 포함되어 있는데, if문에서 한번 더 동일한 조건을 추가하여 내부 구조를 개선했다고 보기는 힘들 것 같습니다

 

참고로 인텔리제이에서 코드라인에 노랗게 표기되는 것은 오류는 아니지만 코드를 인지하여 문제가 발생되는 것을 알려주거나, 코드의 개선이 필요한 내용을 알려주니 이 부분도 참고해주세요 ^^

 

설명드린 내용을 바탕으로 다시한번 고민하여 댓글 혹은 글을 새로 남겨주시면 같이 학습하시는 분들에게도 많은 도움이 될 것 같습니다 😃

감사합니다.

0

yukamikuzzzang3217

개인적으로 int i의 초기값을 0으로 둬야한다는 강박만 벗어나도 훨씬 코드가 간결해질 것이라고 생각합니다. (int를 1로만 잡아도 if문과 그 안에 들어있는 내용이 대폭 줄어들꺼라 생각합니다.)

그래도 덕분에 새로운 생각을 많이 하게 되어 즐겁습니다. 제가 짠 코드 중 핵심 부분만 붙여놓고 가겠습니다.

 

...
System.out.println("students["+0+"] = " + students[0]);
for (int i = 1; i < students.length; i++) {
    students[i] = students[i-1] + score;
    System.out.println("students["+i+"] = " + students[i]);
}
...

문제와 풀이4 문제점

0

41

2

문제풀이 시간마다 방향성

0

39

2

피라미드 문제 풀이

0

71

1

ScannerWhile3 예제 코드 질문

0

55

1

짝수 출력 문제 질문

0

50

1

Array 연습 문제 5번 질문입니다.

0

84

2

단축어가 이상하게 나옵니다

0

128

2

Sql강의

0

90

1

array 문제풀이 2번 질문입니다.

0

55

1

JAVA입문 / 메서드편 문제와 풀이2

0

47

1

인텔리제이 무료버젼이 통합되었다는데 30일 무료버전이면 어떻게 사용하나요

1

800

3

OperationEx3에서 꼭 boolean을 써야 하나요?

0

59

1

for, while문 작성

0

65

1

68강 ArrayEx6 클래스 질문

0

60

1

IO.println(String.format("Hello and welcome!"));

0

149

2

소스코드 실행이 안돼요

0

119

2

메서드 문제와 풀이2에서 마지막 문제 이렇게 풀어도 괜찮은 건가요..?

0

79

1

While과 for 스코프 질문

0

63

1

김영한 java 입문 설치 질문

0

137

2

버퍼문제?

0

54

1

for문 피라미드 찍는거 질문

0

78

1

21버전이 없고, 강의 메뉴얼 확인해보면 된다는 김영한 선생님 답변 확인했습니다.

0

373

1

3번 문제 질문 있습니다.

0

99

2

sout에는 변수가 하나만 들어가야 하나요?

0

134

1