JAVA/java 실습

[자바JAVA] 변수 기본 예제6 - Scanner에 double타입 입력하기, String입력하기, 버퍼비우기, String타입을 int타입으로 변환하기

자바칩 프라푸치노 2020. 9. 7. 07:30

안녕하세요 자바칩 프라푸치노입니다.

오늘은 스캐너 클래스 2탄을 해보겠습니다.

1. double타입 입력받기

2. 문자열 입력받기

3. 버퍼비우기

4. 문자열을 int타입으로 변환

 

스캐너로 입력받기 위해서는 먼저 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package sec01_exam;
 
import java.util.Scanner;
 
public class ScannerEx2 {
 
    public static void main(String[] args) {
        
        //입력 스트림을 사용하겠다고 Scanner클래스를 생성함(콘솔로부터 입력)
        Scanner scanner = new Scanner(System.in);
        scanner.close();
 
    }
 
}
 
cs

요렇게 입력을 하고, 닫아주어야 한다고 했죠!.

이 전 글을 보고 싶으시다면 이 글을 보고 와주세요!

2020/09/06 - [§개발자 되기 프로젝트§/java 실습] - 자바 변수 기본 예제5 - Scanner클래스, 사용자에게 입력받기

이번에는 double타입을 입력받아 보겠습니다.

 

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
package sec01_exam;
 
import java.util.Scanner;
 
public class ScannerEx2 {
 
    public static void main(String[] args) {
        
        //입력 스트림을 사용하겠다고 Scanner클래스를 생성함(콘솔로부터 입력)
        Scanner scanner = new Scanner(System.in);
 
        System.out.print("실수를 하나 입력해주세요.>");
        double dnum1 = scanner.nextDouble();
        
        System.out.print("실수를 하나 입력해주세요.>");
        double dnum2 = scanner.nextDouble();
        
        double result = dnum1 - dnum2;
        System.out.println("dnum1- dnum2 : " + result);
 
        scanner.close();
 
    }
 
}
 
cs

 

요렇게 double타입을 입력받고 싶으면

scanner.nextDouble();메서드를 사용하시면 됩니다.

요렇게 출력이 되었네요.

 


이번에는 String 문자열 타입을 입력받아 보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package sec01_exam;
 
import java.util.Scanner;
 
public class ScannerEx2 {
 
    public static void main(String[] args) {
        
        //입력 스트림을 사용하겠다고 Scanner클래스를 생성함(콘솔로부터 입력)
        Scanner scanner = new Scanner(System.in);
 
        System.out.print("문자열을 입력해주세요.>");        
        String str1 = scanner.nextLine(); //  nextLine() 엔터까지 다 인식
        System.out.println("입력 받은 문자열 : " + str1);

        System.out.print("문자열을 입력해주세요.>");  

        String str2 = scanner.next(); //  next() 공백앞까지 인식

        System.out.println("입력 받은 문자열 : " + str2);

        
        scanner.close();
    }
 
}
 
cs

 

String타입을 입력받는 메서드는 scanner.next(); 와

scanner.nextLine();이렇게 두개가 있는데요

next는 공백 앞까지만 입력을 받고, nextLine은 공백도 모두 입력받고 엔터치기 까지 입력을 받는 것입니다.

 

"안녕하세요 자바칩 프라푸치노입니다."

를 두개 다 메서드를 사용해 입력받아 보겠습니다.

역시나 이렇게 나타났습니다.

 

그러면 그 밑에 추가로 이렇게 쳐보겠습니다.

 

 

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
package sec01_exam;
 
import java.util.Scanner;
 
public class ScannerEx2 {
 
    public static void main(String[] args) {
        
        //입력 스트림을 사용하겠다고 Scanner클래스를 생성함(콘솔로부터 입력)
        Scanner scanner = new Scanner(System.in);
 
        System.out.print("문자열을 입력해주세요.>");        
        String str1 = scanner.nextLine(); 
        System.out.println("입력 받은 문자열 : " + str1);
        
        System.out.print("문자열을 입력해주세요.>");  
        String str2 = scanner.next(); 
        System.out.println("입력 받은 문자열 : " + str2);
 
        System.out.print("숫자를 입력해주세요>");
        String str3 = scanner.nextLine();
        System.out.println("입력받은 문자열 : " + str3);        
        scanner.close();
    }
 
}
 
cs

 

이렇게 밑에 숫자를 입력해주세요를 쳤습니다.

숫자를 문자열 타입으로 받겠다했으니 숫자도 문자열로 나오겠네요.

그럼 출력을 해볼까요?

이게 무슨일인가요!

숫자를 입력해주세요 다음에 우리가 숫자를 입력해야하는데

이렇게 이상하게 나와버렸네요!


그 이유는 버퍼비우기를 안해서 그렇습니다.

nextLine 메서드는 엔터까지 다 출력을 한다고 했죠.

그런데 우리가 위에서 이미 엔터를 쳤습니다.

str2를 치고나서 엔터를 쳤습니다.

str2는 next메서드이기 때문에 아무리 길게 써도 공백앞까지만 출력하고 떠난다고 했죠.

그런데 어쨋든 우리는 글을 다 치고 엔터를 쳤기 때문에 

그 밑에 있는 nextLine에서 받아서 출력을 한 것입니다.

그렇다면

 

 

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
package sec01_exam;
 
import java.util.Scanner;
 
public class ScannerEx2 {
 
    public static void main(String[] args) {
        
        //입력 스트림을 사용하겠다고 Scanner클래스를 생성함(콘솔로부터 입력)
        Scanner scanner = new Scanner(System.in);
 
        System.out.print("문자열을 입력해주세요.>");        
        String str1 = scanner.nextLine(); 
        System.out.println("입력 받은 문자열 : " + str1);
        
        System.out.print("문자열을 입력해주세요.>");  
        String str2 = scanner.next(); 
        System.out.println("입력 받은 문자열 : " + str2);
 
 
         scanner.nextLine();//버퍼 비우기
 
        System.out.print("숫자를 입력해주세요>");
        String str3 = scanner.nextLine();
        System.out.println("입력받은 문자열 : " + str3);        
        scanner.close();
    }
 
}
 
cs

이렇게 중간에 버퍼비우기를 해주면 정상적으로 출력이 되겠습니다.

엔터치는거 까지 받아주는 거를 하나 더 넣어준다 이말입니다.

이렇게 정상적으로 출력이 되었네요.


마지막으로 String타입으로 받은 문자열을 int타입으로 바꾸는 작업을 해보겠습니다.

 

 

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
32
33
34
35
36
package sec01_exam;
 
import java.util.Scanner;
 
public class ScannerEx2 {
 
    public static void main(String[] args) {
        
        //입력 스트림을 사용하겠다고 Scanner클래스를 생성함(콘솔로부터 입력)
        Scanner scanner = new Scanner(System.in);
 
        System.out.print("문자열을 입력해주세요.>");        
        String str1 = scanner.nextLine(); 
        System.out.println("입력 받은 문자열 : " + str1);
        
        System.out.print("문자열을 입력해주세요.>");  
        String str2 = scanner.next(); 
        System.out.println("입력 받은 문자열 : " + str2);
 
 
         scanner.nextLine();//버퍼 비우기
 
        System.out.print("숫자를 입력해주세요>");
        String str3 = scanner.nextLine();
        System.out.println("입력받은 문자열 : " + str3);        
 
 
        int value = Integer.parseInt(str3);
        
        int result = value +1000;
        System.out.println("연산 결과 : " + result);
        scanner.close();
    }
 
}
 
cs

밑에 네 줄을 보시면 되는데요,

Integer.parseInt();메서드를 사용했네요.

그러니까 int타입 변수 value는 위에서 str3에 입력했던 문자열(숫자)를 

진짜 숫자인 int타입으로 바꾼 값이 저장되겠구요,

result는 value 에 1000이 더해진 값이 나오겠네요.

확인해볼까요?

짠 이렇게 출력되었습니다.

오늘은 좀 긴 포스팅이었는데요! 

도움이 되었으면 좋겠습니다.

감사합니다.

728x90