boo106   5년 전

예제 출력은 잘 되는데 런타임 오류가 뜨네요

혹시 Scanner가 여러번 호출 되어서 그런건가요??

여러번 호출되어서 그렇다면 한 번만 호출하고 깔끔하게 close()를 사용한다면 어떻게 해야할까요??

isku   5년 전

Scanner를 한번만 선언해서 사용하세요,

클래스가 달라서 Scanner를 새로 선언한거면

전역으로 만들거나, main 에서 선언 후 Scanner 객체를 인자로 넘겨서 사용해보세요.

boo106   5년 전

전역으로 만드는 것 보다 main에서 선언 후 객체를 인자로 넘기는게 더 효율? 안정? 적인가요??

isku   5년 전

효율적인 부분은 차이가 없다고 생각합니다.


안정적인 문제는 좀 생각해봐야합니다.

실제 프로그램을 만든다고 생각하면 전역변수로 두는 것은 위험할 수 있습니다.

Scanner를 동시에 접근하거나, 변경할 수 있는 문제도 있고, 동기화 관련 문제도 생길 수 있습니다.

예를 들면 멀티스레딩 환경에서 입력을 받고 싶을 때를 들 수 있겠죠.

물론 이러한 부분을 생각하는 건 비교적 큰 프로젝트에서 고민 할 부분입니다.

PS를 할 때 입력을 받는 부분은 비교적 덜 중요한 부분이기 때문에, 전역으로 선언하는 것에 대해 부정적이진 않습니다.

오히려 전역으로 선언하면 코드를 작성하기 매우 간편해지기에 좋은 방법이라고 할 수도 있겠습니다.

위에서 예로 든 문제에 대해서, 객체지향적인 부분과 PS를 위한 부분을 동시에 만족 시키는 방법은

입력과 출력만을 위한 전용 클래스를 만들어 사용하는 것도 좋은 방법이라고 생각합니다.

결국 이 부분은 어느 쪽이 더 좋다라고 하기 보다는, PS를 할 때에는 취향차이라고 생각됩니다.

댓글을 작성하려면 로그인해야 합니다.