View

김영한 님의 스프링 입문 강의를 전부 듣고, 자바 기초를 다시 다져야겠단 생각이 절실해져 새로운 마음가짐으로 백준 문제 풀이를 시작했다. 오늘부터는 그 유명하다던 남궁성 강사님의 자바의 정석도 정주행해 볼 예정!

 

하여튼 문제는 여기에서 발생했다. 프로그래머스 0단계에서는 딱히 내가 클래스와 메서드를 지정해 주지 않아도 자동으로 템플릿을 제공해 주었고, 메서드로 매개변수로 받게 해 입력을 설정해 줄 일이 없었는데, 백준에서는 시작점부터 막히게 된 것이었다. 배운 기억은 있지만 굉장히 가물가물했다. (...)

 

과정이 오래 지나면서 콘솔에서 입력을 받는 것이 아니라 view 에서 전달해 온 정보들을 로직 처리 하는 것에 익숙해져 있었기 때문에, Scanner 사용이 조금 낯설게 느껴졌고 이번 기회에 다시 정리해 보고자 한다.

import java.util.*;
class Main{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        System.out.println(a+b);
    }
}

우선 백준에서는 class Main 과 main 메서드 설정이 필수다. 클래스 이름도 꼭 메인으로 해 주어야 한다.

import 로 자바 유틸에 있는 스캐너를 받고 객체 생성 해 준다.

객체 생성을 해 주면서, 시스템 입력을 받을 것이므로 (System.in) 을 작성해 주고,

Scanner 안에 있는 메서드(nextInt) 를 이용하여 변수 처리 해 주면 끝!

 

다만 나는 지금 int 형을 사용했는데, scanner 안에서 제공해 주는 메서드들은 다양하다.

import java.util.*;
class Main{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        
        long b = sc.nextLong();
        double c = sc.nextDouble();
        
        String s = sc.next();
        String t = sc.nextLine();
    }
}

각자 자료형에 맞는 타입을 사용해 주면 된다.  위는 자주 사용할 것 같은 자료형으로 일부 추린 메서드들이며, 찾아보면 더 있다! (float, byte, short 등)

 

단, String 에서 사용하는 메서드 중 특이 사항이 있는데,

next() 메서드는 띄어쓰기가 끝이라 생각해서 띄어쓰기 전까지만 입력이 된다.

만약 코딩 잘하고 싶다를 입력한다면, 코딩까지만 입력이 되는 것이다.

 

띄어쓰기까지 전부 포함하여 출력하고 싶다면 nextLine() 메서드를 이용해 주면 된다.

nextLine() 메서드는 엔터가 끝이라고 생각하기 때문에 코딩 잘하고 싶다를 입력받을 수 있다.


nextLine() 메서드를 사용할 때 유의할 점이 하나 있는데, nextLine 메서드 전 만약 다른 메서드를 사용할 경우 오류가 발생할 수 있다. 그 이유에 대해 알아보자.

import java.util.*;
class Main{
    public static void main(String args[]){
        String s = sc.next();
        /* 위 문자에 하이 퍼 입력*/
        String t = sc.nextLine();
    }
}

위에서의 S 변수를 출력하면 "하이" 만 나올 것이다. 띄어쓰기를 끝으로 인식하여 자르기 때문이다.

여기에서의 중점은 "퍼" 는 어디로 갔냐는 것인데, 이때 이 퍼가 버퍼에 남아 있어 nextLine() 메서드를 사용하게 되면 오류가 뜬다.

 

그래서 만약 다음으로 nextLine() 변수를 사용하게 될 경우, 중간에 초기화를 한 번 시켜 주어야 한다.

import java.util.*;
class Main{
    public static void main(String args[]){
        String s = sc.next();
        /* 위 문자에 하이 퍼 입력*/
        sc.nextLine();
        String t = sc.nextLine();
    }
}

nextLine() 을 사용하기 전 메서드를 한 번 이용해 주면, 입력 버퍼에 남아 있었던 퍼가 사라지며 t 변수를 출력하더라도 제대로 작동할 수 있게 된다.

 

모두 파이팅!

Share Link
reply
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31