그에 앞서, 오늘은 인스턴스 객체를 선언하여 기존 자바 언어에서 제공되는 클래스의 메서드를 사용해보겠습니다.
인스턴스 객체를 설명하기전, 자바에서 메서드를 사용하는 방법에는 두 가지가 있다는 것을 먼저 설명드리겠습니다.
자바 파일(소스파일)은 명령어를 모아놓은 것이라고 했었죠. 그 명령어가 바로 메서드를 의미합니다. 자바에서 메서드를 호출하기 위해서는 메서드가 속한 클래스를 메서드 앞에 적어주어야 합니다.
클래스.메서드();
이런 형식으로 말이죠.
그런데 위에서 설명드린 방식은 JOptionPane방식으로 자바에서 제공하는 메서드를 그 메서드가 속한 클래스까지 함께 적어주어 메서드를 호출하는 방식입니다.
인스턴스 객체 방식은 내가 사용하고 싶은 메서드가 속한 클래스에 대해서 나름의 이름으로 객체를 선언해 주고 그 객체를 통해 메서드를 호출하는 방식입니다. 설명이 더 어려우니 실제 코드를 보면서 설명드리겠습니다.
10번째 라인에서 제가 사용하고 싶은 메서드는 키보드로부터 이름을 입력받는 함수인데 그 함수는 Scanner라는 클래스에 있으므로 Scanner클래스의 객체를 만들어 줍니다. 객체 이름은 제 마음대로 sc라고 지었습니다. 이로써 Scanner라는 자바에서 제공되는 클래스는 제 소스에서는 sc라는 객체로 사용할 수 있습니다. 즉, 12번째 라인에서 sc.nextLine();으로 Scanner 클래스안의 메서드 nextLine()을 호출하는 것을 알 수 있습니다.
입력받은 문자열은 13행에서 확인할 수 있습니다.
Scanner 클래스 안에는 nextLine()말고도 nextInt(), nextDouble(), next()등의 함수가 존재합니다. 각각, 정수, 실수, 한 단어(엔터나 스페이스는 구분으로 인식)를 입력받는 함수입니다.
그런데, 여기서 주의해야 할 것이 있습니다. 여러개의 데이터를 입력받는 프로그램을 작성할 때는 "엔터"키에 대한 처리가 필요합니다.
다음의 예를 통해 살펴보시죠.
데이터를 입력받는 순서가 책 가격->책 이름입니다. 실행결과 책 가격을 입력하고 엔터키를 치면 책 이름을 입력받기 위한 name에 엔터가 입력되고 다음 책가격과 책이름을 출력하는 코드가 실행됩니다. 이런 문제는 다음과 같이 엔터키를 처리함으로써 해결할 수 있습니다.
29행의 sc.nextLine();을 호출하여 사용자가 책 가격을 입력하고 엔터키를 치면 책 가격은 nextInt();에 의해 price에 저장되고 엔터키는 nextLine();에 의해 가져가지지만 저장은 되지 않음으로써 엔터키가 처리됩니다. 따라서 32행의 책 이름을 저장하는 코드도 정상적으로 실행됩니다.
C언어에서 버퍼를 비우기 위해 fflush();를 호출하는 것과 유사합니다.
그럼 다음시간에는 인스턴스 객체를 사용하여 메서드를 호출하는 방식으로 성적을 입력받아 총점과 평균을 출력하는 프로그램을 만들어 보겠습니다. 그 다음 시간에는 똑같은 기능을 JOptionPane방식으로 구현해보도록 하겠습니다.
댓글 없음:
댓글 쓰기