오늘은 예고한데로 Scanner 클래스를 이용한 문자 입출력 예제인데 설명에 앞서 위의 코드를 에디터에 치고 실행부터 해보기 바란다. 잘 작동하면 오히려 이런 반문이 생길 것이다. 진작 이걸로 알려주지 헤깔리게 다른거 보여줬냐고 말이다. 배우는게 힘이다. 모르면 몸이 고달프다. ^^ 이렇게 같은 값을 얻더라도 그 과정은 다를수 있다는걸 알려주기 위한 예제이니 어떤 프로그램이든 기왕이면 좀더 효율적으로 값을 얻어내는 방법이 있는지 항상 탐구하는 자세를 갖기 바라면서 이제 본격적으로 코드 설명을 시작해 보겠다.
일단 맨 첫줄에서는 Scanner 클래스를 쓰기 위하여 import 해왔다. 이 클래스는 java.util 패키지에 들어있는데 util 이라는 말에서 짐작할수 있듯 편리한 기능들이 많이 있으니 심심할때 한번씩 들여다보기 바란다. 어디에서? jdk api 문서에서... 이미 저번에 설명한바 있으니 어떻게 찾는지는 생략하겠다.
클래스 Test4에 메인메소드가 들어있는데 안에 무슨 내용이 있는지 살펴보자. 처음에 보이는 구문은 Scanner 인스턴스를 만들면서 입력값(System.in)을 받을 준비를 하라는 뜻이다. 그리고 마지막에 sc.next() 메소드는 그 인스턴스를 이용해 받은 문자를 처리하는 것이고 말이다. 더 설명할게 없네. 끝이다. 허걱~ 너무 간단한가? 아쉬움을 달래기 위해 조금 더 설명하자면,
String s=sc.next();
System.out.println(s);
System.out.println(sc.next()); 이 라인은 위의 두 라인과 일맥상통한다. 어느쪽이든 좋은 쪽으로 쓰기 바란다. 그런데 위의 자바소스는 띄워쓰기를 허용하지 않으므로 한 단어 밖에는 입출력할수 없다. 그럼 라인 전체를 입력받아서 출력할수는 없을까? 하는 의문이 생길지도 모르겠다. (생겼길 바란다. ^^)
딱 하나만 바꿔주면 된다. 바로 next() 를 nextLine() 으로 바꾸어주면 띄워쓰기 몇번을 해서 입력하든 상관이 없다. 즉, 문자열을 출력하길 원하면 nextLine() 메소드를 이용하면 되는 것이다. 지금 이 예제는 문자열이므로 숫자나 문자나 상관이 없지만 숫자만 받아들이게 만들수도 있다. 그럴 경우 next() 대신에 nextInt() 메소드로 교체해주면 숫자만 입출력할수 있게 만들어준다. Int 는 당근(?)이지만 integer를 뜻한다. 라이브러리에 이처럼 다양한 메소드들이 있으니 이해가 되든 안되든 눈에 익도록 자주 들여다보기 바란다. 언젠가 써먹을 날이 있을 것이다.^^
마지막으로 저번 입출력 예제와 이번 입출력 예제에서 크게 다른 점이 하나 남아있다. 혹시 발견한 똑똑한 이(?)가 있다면 손들어봐라. 과연 있을까? ㅎㅎ 숨은그림찾기에 가까운데 아직 발견 못했으면 다시 한번 찾아보고 정답을 들여다보기 바란다. 둥둥~두두둥~~ 그것은 바로 입출력 예외처리(IOException)를 할 필요가 없다는 것이다. 허걱~ 이럴수가! ㅎㅎ Scanner가 마술사라서 그렇다.^^
잘보고 가요~
답글삭제-Carter24
잘봤습니다 ㅡ 감사합니다
답글삭제두줄을 입력받아 출력하는 방법은어떻게하나요??
답글삭제스캐너를 두번써야하나요?음.............
cmd에서 한줄 띄우는건 어떻게하죠........?
엔터치면 그냥 결과값이 보여줘요
제 질문이 어렵죠?ㅠ
//주인장은 아닙니다만 두줄 입출력은 아래와 같이 하시면 됩니다
답글삭제System.out.println("두줄 입력가능??");
Scanner sc_1 = new Scanner(System.in);
Scanner sc_2 = new Scanner(System.in);
String str_1 = sc_1.nextLine();
String str_2 = sc_2.nextLine();
System.out.println(str_1);
System.out.println(str_2);
♨따끈따끈하네요~~^^
답글삭제감사합니다~~
sc가 어떤 의미인가요?
답글삭제//역시 주인장은 아닙니다만,답글답니다.
삭제sc는 scanner 의 변수명입니다. 컴포넌트들을 쓸때 보통 해당 컴포넌트들의 약어를 사용합니다.