클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

메서드 10 - 메서드 기초 실습 본문

프로그래밍 언어/자바

메서드 10 - 메서드 기초 실습

huenuri 2024. 8. 15. 16:52

3시간 정도 놀았으니 이제 다시 공부를 할 때가 되었다. 하지만 쉽사리 마음이 움직여지지 않는다. 그래도 억지로라도 해야 할 것이다. 이제 클래스에 대한 학습을 본격적으로 시작해보려고 한다.

여기까지 오기까지 얼마나 힘들었는지 모른다. 먼저 엘리스로 학습을 시작해본다.

 

원래는 클래스 학습을 시작하려고 했지만 아직 메서드도 잘 모르는 것 같아 이 부분을 한번 더 복습하고 넘어가기로 했다. 뭐든 빨리 진도를 빼는 게 중요한 게 아니다. 모르면 될 때까지 다시 학습하고 또 학습하는 것이 더 중요한 것 같다.


 

 

 

 

 

실습 1 - 메서드 사용해보기

입력 받은 수의 제곱 값을 출력하는 프로그램 만들기

 

 

 

사실 엘리스에서 풀 때는 주어지는 예제가 많아서 쓸 게 별로 없었다. 그래서인지 무슨 문제인지 파악하지도 못한채 답만 맞추기 바빴던 것 같다. 이번에 처음부터 코드를 직접 써보니 확실히 이해가 되었다.

메소드는 main 함수보다 앞에 있어야 했다. return에는 반환되는 값을 적어주는데 여기서는 제곱수로 반환할 것이니 이렇게 써준다. 그리고 출력할 때 이 부분이 좀 헤깔렸는데, 함수를 그대로 써야 한다. 매개변수까지..

 

이 예제는 매개변수와 리턴 타입이 모두 있는 유형이었다.


 

 

 

 

 

실습 2 - 반환값이 없는 메소드

입력된 정수 값만큼 Hello, Elice!를 반복하여 출력한다.

 

 

앞의 예제에서는 println 안에 출력할 함수를 불러왔다. 근데 여기서는 이렇게 쓰자 오류가 표시된다. 왜 그럴까? 전에 학습할 때는 이러한 차이점도 느끼지 못했다.

여기서 발생한 오류는 printHello 메소드가 반환값이 없는 void 메소드임에도 불구하고, main 메소드에서 System.out.println(printHello(n));로 호출한 후 결과를 출력하려고 한 것입이다. printHello 메소드는 단지 출력을 수행하고, 값을 반환하지 않으므로 System.out.println()으로 출력할 필요가 없다.

 

전의 코드는 int가 써져있는 정수로 반환하는 메소드였으나, 이건 void이므로 반환값이 없다. 그러니 출력문을 쓸 때 println을 쓰면 안 되고, 그냥 바로 함수 이름만 쓰면 된다.


 

 

 

 

 

 

5를 입력했더니 문장이 5번 출력되었다.


 

 

 

 

 

실습 3 - 매개변수가 없는 메소드

입릭 받은 정수만큼 1부터 100 사이의 정수를 무작위로 반환한다.

 

 

 

이 문제는 반환값은 있고 매개변수가 없다. 반환값이 없기에 랜덤 수로 무작위로 아무 숫자를 불러올 수 있고, 매개변수는 정수를 하나 받는 것으로 했다.

이 역시 엘리스 프로그램으로 풀어볼 때는 미쳐 알지 못했던 부분이었다. 이제 확실히 이해할 수 있어서 기쁘다!


 

 

 

 

실습 4 - 사칙 연산

매개변수 2개를 입력 받아 사직 연산 메소드를 만들어본다.

 

 

 

원래 문제에는 다른 수였지만 숫자를 바꾸어보았다. 그리고 int로 만 연산이 되어있던 나눗셈도 함수를 실수 연산이 가능하도록 했다. 하지만 원래대로라면 나눗셈은 3.3이 되어야 한다. 매개변수를 int하자 연산은 그대로 하고 여기에 실수라는 형태만 바뀐 것 같다. 

 

 

 

 

매개변수를 double로 바꾸어보기도 하고 이처럼 형변환을 해도 소숫점이 너무 많이 나온다. 첫째 자리만 나오게 하려면 어떻게 해야 할까?

 

 

 

 

printf 함수를 사용하면 이렇게 나타낼 수 있다. C 언어에서만 사용하는줄 알았는데 자바에서도 쓸 수 있었다. 한 가지 또 배웠다. 처음에는 이 계산을 할 때 +, - 등의 연산 기호를 붙였으나 메소드에서는 매개변수만 쓰고 ,로 구분하면 되었다.


 

 

 

 

학습을 마치고

아직 클래스 공부를 하기에 미진한 것 같아 메소드 복습을 하는데 정말 좋았다. 사실 난 메소드를 아직 잘 모르고 있다는 걸 알게 되었다. 여기에 훨씬 더 어려운 클래스를 배운다면 더 이해하기 어려울 것 같았다.

메소드가 무엇인지 어떻게 만드는지 알 것 같다.