(JAVA) 키 입력, Scanner 클래스

InAnarchy·2022년 10월 20일
0

JAVA

목록 보기
4/18
post-thumbnail

Table of Contents

  • Scanner를 통한 키 입력
  • Scanner클래스의 주요 메소드
  • nextLine()과 next()
  • nextInt( ) 사용 후 nextLine( ) 사용시 문제점

Scanner를 통한 키 입력

  1. import문을 사용한다.
import java.util.Scanner;
  1. Scanner 객체를 생성한다.
Scanner scanner = new Scanner(System.in);
  1. Scanner 클래스로 키를 입력받는다.
        String name = scanner.next();
        String city = scanner.next();
        int age = scanner.nextInt();
        double weight = scanner.nextDouble();
        boolean isSingle = scanner.nextBoolean();

Scanner클래스의 주요 메소드

example

import java.util.Scanner;

public class scanner {
    public static void main(String[] args) {
        Scanner myObj = new Scanner(System.in);  // Create a Scanner object
        System.out.println("Enter username");

        String userName = myObj.nextLine();  // Read user input
        System.out.println("Username is: " + userName);  // Output user input
    }
}

nextLine()과 next()

nextLine()은 엔터 단위로 읽고, 나머지는 공백을 기준으로 분리하여 토큰 단위로 읽는다.

nextLine()은 공백을 포함한 문자열을 입력받을 수 있다.

import java.util.Scanner;

public class scanner {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str1 = scanner.next();  // today is friday
        System.out.println(str1);      // today
        Scanner scanner2 = new Scanner(System.in);
        String str2 = scanner2.nextLine();  // today is friday
        System.out.println(str2);      // today is friday
    }
}
import java.util.Scanner;

public class scanner {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 6; i++) {
            String number = scanner.nextLine();
            System.out.println(number);
        }
    }
}

nextInt( ) 사용 후 nextLine( ) 사용시 문제점

Reference: [Java] nextInt( ) 사용 후 nextLine( ) 사용시 문제점 해결 방법

import java.util.Scanner;

public class scanner {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int num;
        String str;

        System.out.print("num 입력> ");
        num = scan.nextInt();

        //문제발생 : 개행문자(엔터)가  str에 저장됨
        System.out.print("str 입력> ");
        str = scan.nextLine();

        System.out.println();
        System.out.println("num : " + num);
        System.out.println("str : " + str);
        scan.close();
    }
}
output
num 입력> 50
str 입력> 
num : 50
str : 

해결방법1: scan.nextLine(); 추가

import java.util.Scanner;

public class scanner {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int num;
        String str;

        System.out.print("num 입력> ");
        num = scan.nextInt();
        scan.nextLine();    //개행문자(엔터)를 제거하기위해 추가

        //문제발생 : 개행문자(엔터)가  str에 저장됨
        System.out.print("str 입력> ");
        str = scan.nextLine();

        System.out.println();
        System.out.println("num : " + num);
        System.out.println("str : " + str);
        scan.close();
    }
}
output
num 입력> 50
str 입력> abc

num : 50
str : abc

해결방법2: Scanner.nextLine( )으로 입력받고 Integer.parseInt( )로 변환

import java.util.Scanner;

public class scanner {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int num;
        String str;

        System.out.print("num 입력> ");
        num = Integer.parseInt(scan.nextLine());

        System.out.print("str 입력> ");
        str = scan.nextLine();

        System.out.println();
        System.out.println("num : " + num);
        System.out.println("str : " + str);
        scan.close();
    }
}
profile
github blog 쓰다가 관리하기 귀찮아서 돌아왔다

0개의 댓글