'표준 입력'에 해당되는 글 2건

  1. 2018.11.04 자바 표준 입력 클래스 Scanner 사용법 1
  2. 2018.10.23 C 표준 입력 함수 scanf



안녕하세요 열코입니다.

이번 시간에는 자바의 기본 입력 클래스인 스캐너(Scanner) 클래스에 대해 알아보도록 하겠습니다.

자바의 스캐너 클래스는 java.util 패키지 내에 존재하는 클래스로,

정수(int), 실수(double)등의 기본적인 데이터 타입 입력을 받기위한 클래스입니다.

자바에서 콘솔(Console)의 표준 입력의 대표 클래스로, 가장 간단하고 쉬운 방법으로 읽어 올 수 있습니다.

그러나 많은 양과 다수의 회수의 입력을 받아야 할 때에는 추천하지 않는 클래스입니다.

이에대한 자세한 설명은 추후에 설명하도록 하겠습니다.


스캐너 클래스를 사용하기 위해서는 다음과 같은 사항에 주의해야합니다.

1. 스캐너 클래스의 객체를 만들려면 표준 입력 스트림을 나타내는 System.in이라는 이미 정의 되어있는 객체를

전달해야 합니다. (파일로부터의 입력은 File 클래스의 객체를 전달할 수도 있습니다.)

2. 특정 데이터 유형의 값을 읽기 위해 사용하는 함수는 next~() 함수입니다.

예를들어, nextInt(), nextDouble() 등과 같은 함수를 사용할 수 있습니다.

3. 문자열, 한줄(엔터키 기준으로)을 모두 읽기 위해서는 nextLine() 함수를 사용할 수 있습니다.

4. 단일 문자(char)를 읽기 위해서 next()와 charAt() 함수를 함께 사용할 수 있습니다.



다음은 여러 데이터 유형의 입력을 받는 스캐너 클래스의 예제 소스코드입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Scanner;
 
public class myScanner
{
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
 
        int i = scanner.nextInt();
        char c = scanner.next().charAt(0);
        long l = scanner.nextLong();
        double d = scanner.nextDouble();
        String s = scanner.nextLine();
    
        System.out.println("int : " + i);
        System.out.println("char : " + c);
        System.out.println("long : " + l);
        System.out.println("double : " + d);
        System.out.println("string : " + s);
    }
}
cs


또한 스캐너에 대해 입력이 있는지 확인하는 hasNext~() 함수를 사용하여,

원하는 만큼 입력을 받을 수도 있습니다.

다음은 hasNextInt() 함수를 사용한 예제 소스코드입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.Scanner;
 
public class myScanner
{
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
 
        int i = 0;
 
        while(scanner.hasNextInt())
        {
            int num = scanner.nextInt();
            i += num;
        }
 
        System.out.println("total : " + i);
    }
}
cs



이상 '자바 Scanner 클래스'에 대해 알아보았습니다.

질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!

메인 페이지로 이동하시면 더 많은 자료를 볼 수 있습니다.


'Java' 카테고리의 다른 글

구글, 파파고 번역 API 성능 비교  (1) 2019.09.18
google translate api v3 사용법  (1) 2019.09.16
java spring pwa fcm web push 구현  (2) 2019.09.10
Object 클래스에 대해  (0) 2018.11.04
자바 상속  (0) 2018.10.17
자바 싱글톤 클래스(Singleton class)  (3) 2018.10.16
자바 Wrapper Class  (0) 2018.10.15
자바 파일 입출력  (0) 2018.10.04

C 표준 입력 함수 scanf




안녕하세요 열코입니다.

저번 시간에 C언어 표준 출력 함수인 printf() 함수에 대해 알아봤는데요.

이번 시간에는 C언어 표준 입력 함수인 scanf() 함수에 대해 알아보겠습니다.

scanf() 함수 역시 printf()와 같이 표준 입출력 헤더파일인 stdio.h에 포함되어 있으므로

사용시,


1
#include <stdio.h>

cs


를 추가해줍니다.


scanf() 함수의 프로토타입입니다.


1
2
3
4
int scanf(  
   const char *format [,  
   argument]...   
);  
cs


printf() 함수와 동일하게 형식 필드 문자 format과 선택 인수들이 있습니다.

형식 필드 문자는 printf() 함수의 형식 필드 문자를 참고해주세요. (단 a 문자는 사용할 수 없습니다.)

반환 값 역시 printf() 함수와 동일한 int 형이며, 지정된 필드 수를 반환합니다.


다음은 scanf() 함수의 기본 예제 소스 코드입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main() {
    int i;
    
    printf("숫자를 입력해 주세요 : ");
 
    scanf("%d"&i);
 
    printf("입력받은 숫자는 %d입니다.\n", i);    
 
    return 0;
}
cs


scanf() 함수의 두번째 인자들은 저장 할 변수의 주소이며, 변수 이름 앞에 & 기호를 꼭 붙여주어야 합니다.

이는 주소값을 의미하며, 해당 자료는 포인터강좌를 참고하세요.




또한 여러 데이터를 한번에 입력받을 수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
int main() {
    int i;
    float f;
    char c;
    char s[100];
 
    printf("정수, 실수, 문자, 문자열 순으로 입력해주세요 : ");
    if(scanf("%d %f %c %s"&i, &f, &c, s) != 4) {
        printf("잘못된 입력입니다.");
    }
    else {
        printf("정수 : %d\n", i);
        printf("실수 : %f\n", f);
        printf("문자 : %c\n", c);
        printf("문자열 : %s\n", s);
    }    
 
    return 0;
}
cs


4개를 입력 받기 때문에 scanf() 함수의 반환값으로 4가 반환되며,

이가 아니 경우(적거나 많은 경우) 잘못된 입력을 출력합니다.

위 설명에서 scanf() 함수의 두번째 인수들의 이름 앞에 & 기호를 붙이라고 했는데요.


하지만 %s에 해당하는 인수는 &s가 아닌 그냥 s네요.

이는 char 배열(문자열)의 이름과 관계가 있는데요.

배열의 이름은 배열의 첫번째 원소의 주소와 같습니다.

이에 대한 설명은 배열강좌에 설명되어 있으며, C언어 초급자 분이시면

그냥 문자열 입력받을때는 &기호를 생략한다. 라고 알고 계시면 되겠습니다.


필요에 따라 * 기호를 추가하여 일부 입력을 무시할 수도 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main() {
    int i;
    
    printf("숫자를 입력해 주세요 : ");
 
    scanf("%*s %d"&i);
 
    printf("입력받은 숫자는 %d입니다.\n", i);    
 
    return 0;
}
cs


첫번째 인수인 %s의 입력을 무시합니다.

이 경우 공백이나 새로운 줄 입력까지의 입력을 무시합니다.




이상 'C 표준 입력함수'에 대해 알아보았습니다.

질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!

메인 페이지로 이동하시면 더 많은 자료를 볼 수 있습니다.



'C, C++' 카테고리의 다른 글

C언어 변수 이름이 숫자로 시작할 수 없는 이유  (0) 2018.11.13
C 정적(static) 변수  (0) 2018.10.29
C 변수 선언 및 키워드  (0) 2018.10.25
C 표준 출력 함수 printf()  (0) 2018.10.22
C++ 가상 함수(Virtual Function)  (8) 2018.10.19
C++ 연산자 오버로딩  (2) 2018.10.12
C++ 함수 오버로딩  (0) 2018.10.11
C/C++ 메모리 동적할당  (0) 2018.10.11

to Top