○ 문제링크

https://www.hackerrank.com/challenges/java-stdin-stdout/problem

 

Java Stdin and Stdout II | HackerRank

Familiarize yourself with Standard Input/Output.

www.hackerrank.com

 

○ 문제 내용 요약

Input Format

There are three lines of input:

  1. The first line contains an integer.
  2. The second line contains a double.
  3. The third line contains a String.

Output Format

There are three lines of output:

  1. On the first line, print String: followed by the unaltered String read from stdin.
  2. On the second line, print Double: followed by the unaltered double read from stdin.
  3. On the third line, print Int: followed by the unaltered integer read from stdin.

To make the problem easier, a portion of the code is already provided in the editor.

Note: If you use the nextLine() method immediately following the nextInt() method, recall that nextInt() reads integer tokens; because of this, the last newline character for that line of integer input is still queued in the input buffer and the next nextLine() will be reading the remainder of the integer line (which is empty).

import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        
        int i = scan.nextInt();
        // Write your code here.

        System.out.println("String: " + s);
        System.out.println("Double: " + d);
        System.out.println("Int: " + i);
    }
}

 

○ 문제의 핵심

- scan.nextInt() 동작 이후 scan.nextLine() 진행시 개행문자 '\n' 이 개행문자로 남아 다음 본문을 재대로 인식하지 못한 부분을 해결

 

○ 해결방법

1. int, double도 scan.nextLine()으로 입력받은 후 Integer.parseInt(String); Double.parseDouble(String); 으로 변경

(BUT, 해당 문제는 최초에 Write your Code here 전 int i 를 받고 있어 다음 문장을 작성해야하므로 Integer.parseInt(String) 를 사용할 수 없음)

2. 숫자 먼저 받은 후(int, Double) String을 받기전 scan.nextLine(); 으로 개행문자 제거

다음 scan.nextLine(); 을 이용해 정상적인 문자열 scan 진행

import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        
        int i = scan.nextInt();
        // Write your code here.
        double d = scan.nextDouble();
        scan.nextLine();
        String s = scan.nextLine();

        System.out.println("String: " + s);
        System.out.println("Double: " + d);
        System.out.println("Int: " + i);
    }
}

+ Recent posts