VI. Java Basic (4)

Gunju Kim·2024년 8월 28일
post-thumbnail

메소드와 매개변수 - 2

alt text

  • 금일은 클래스를 생성하고 메소드를 선언하고 그것을 반복하여 실습하는 과정을 많이 가졌다. 실습을 진행하는 와중에 대체로 이해가 안되는 것이 많았지만 그래도 차근차근히 오늘 이해해본 내용들을 풀이해보려 한다.

  • 위의 클래스는 자판기를 돌리는 프로그램을 돌리기 위해 생성한 클래스 프로그램이다.

  1. Scanner 를 클래스에 생성하면 클래스에 적용되고 그것을 객채로 생성해도 똑같이 적용된다. 어차피 클래스에 생성된 것을 돌리는 프로그램이다.
  2. 보통 클래스를 생성할 때 어떠한 값을 계산해서 그 값을 다시 적용해야 되는 상황이 아니라면 메소드를 선언을 public void 로 해도 상관없다. public int 가 사용되는 시점은 그 리턴 값을 적용해야 되는 상황이기 때문에 그 리턴 값을 적용하지 않는 상황이라면 public void 를 해서 void 값으로 적용해도 된다.
  3. int 값을 지정할 때 오늘은 Integer.parseInt(sc.nextLine());을 이용해서 지정하는 일이 많았다. 그 이유인 즉슨, sc.nextInt() 로 받는 값은 숫자로만 가능하기에 문자와 숫자를 같이 받는 상황이 발생될 때에는 Integer.parseInt(sc.nextLine()) 이라는 명령문을 문자와 숫자를 같이 입력받아 그 값을 변수에 저장하는 일이 많았다고 보면 된다.

alt text

  • 계속해서 자판기 프로그램의 코드이다. 기본적인 구조는 전에 만들었던 계산기 혹은 명부작성 프로그램이랑 비슷하지만 이번 코드는 클래스로 따로 만들어서 러닝 프로그램에서 객체만 불러와 실행하는 연습을 했기에 지금 이 코드는 클래스로만 작성된 코드라고 볼수 있다.
  1. 꽤 애를 먹은 부분은 2번 기능을 구현함에 있어서 많은 시간을 소비했다. 5번 멈추는 기능을 제일 처음에 만들고 1번 기능을 계산식을 통해 구현하고 그 다음에 그 기능을 응용하여 4번 기능까지 만드는데 성공했지만 2번 기능에 대한 접근 방식이 생각 보다 어려웠다. 하지만 생각해보면 답은 의외로 간단한 것이었다.
  2. else if 문을 통해 메뉴의 2번 기능을 설정을 해주고 그 기능을 선택하면 "음료 선택" 이란 문구가 나오게 만든 다음 위에서 말했던 Integer.parseInt(sc.nextLine()); 이라는 문장을 통해 문구가 나온 다음에 숫자를 입력하게 만들고 그 받는 숫자를 바로 변수에 담아주면 되었다.
else if (menu == 2) {
 System.out.println("음료 선택")
 int select = Integer.parseInt(sc.nextLine()); 
}

이 문장을 통해 간단히 내가 입력하고 싶은 숫자를 입력하면서 바로 변수에 담으면 된다. 그리고 음료를 선택하면 그 선택한 음료의 가격만큼 내가 투입한 금액에서 차감되는 계산식을 완성을 먼저 구성해준다.

System.out.println(drinks[select] + "를 뽑았습니다.")
remainder = remainder - price[select];
System.out.println("잔액은" + remainder + "원 입니다.")

위와 같은 문장으로 선택한 음료수의 가격만큼 차감을 하고 남은 금액을 보여주는 계산식과 출력문을 완성시킨다. 하지만 남은 금액보다 음료수의 가격이 클 때도 이러한 문장을 출력하면 계산이 되지 않으니 중간에 건너뛰기 기능을 먼저 설치해줘야 한다.

if (price[select] > remainder) {
  System.out.println("잔액이 부족합니다.")
  continue;

}

이렇게 건너뛰기 기능을 설치하면 만약에 투입된 금액보다 선택한 음료수의 가격이 높을 경우 "잔액이 부족합니다." 라는 문구가 뜨면서 다른 계산식들을 진행하지 않고 기본 메뉴로 건너 뛰어 버린다. 따라서 순서에 맞게 이 코드들을 이어붙이면:

else if (menu == 2) {
 System.out.println("음료 선택")
 int select = Integer.parseInt(sc.nextLine()); 
} if (price[select] > remainder) {
  System.out.println("잔액이 부족합니다.")
  continue;

}
System.out.println(drinks[select] + "를 뽑았습니다.")
remainder = remainder - price[select];
System.out.println("잔액은" + remainder + "원 입니다.")

이렇게 완성이 된다. 이 2번 기능을 구현하는게 가장 난해한 것이었지만 그래도 가장 많이 배운것도 이 기능인것 같다.

![alt text](

마지막은 새로운 러닝 프로그램을 하나 만들어서 만들어 놨던 클래스를 소환하는 객체를 만들어 이 프로그램을 실행시키는 일로 마무리를 지었다.

마무리를 하며

  • 생각보다 글로 프로그램에 대한 설명을 읽고 그것을 빨리 머리 안에 코드로 연상시켜서 연습하는 반복 작업이 많이 필요하다. 기본적으로 사람은 추상적인 표현을 많이 쓰고 그 기능을 구체적으로 표현하기까지 여러 필터링이 많이 필요하고 그것을 이해하는 것도 개발자의 능력이라고 생각한다. 글을 코드로 번역시키는 연습을 많이 해야될 것 같다.
profile
처음이라서 그래 가본적 없던 길에

0개의 댓글