본문 바로가기



프로그래밍/JAVA

[JAVA] 자바의 표준 입력 Scanner 및 nextInt()

자바에서는 타언어와 다르게 Scanner 와 System.in을 통해 입력을 한다. 이는 자바가 JVM이라는 가상머신위에서 구동되기 때문으로 생각 되는데. 따라서 입출력을 위해 자바만의 과정이 필요하고, 이를 이용하는 클래스 모듈이 Scanner이며 받아들일 데이터의 종류를 지정해야하는데 그 때 쓰이는 메서드가  nextInt( ), nextFloat( )등의 자료형을 지정하는 코드이다. 특이하게 자료형을 지정할때 첫글자가 대문자이다. 초심자로써는 순간순간 대문자를 입력하여야 하므로 주의하여야한다. 

단순하게 두가지 값을 입력받아 그대로 출력하는 코드를 만들어 보았다. 즉, Scanner 두번써보기

import java.util.Scanner; // Scanner를 import 한다, 단축키 Cttl+Shift+O
public class Main {
	public static void main(String[] args) {
		Scanner  sc = new Scanner (System.in); // Scanner는 받은 데이터를 
        //바이트로 변환하여 돌려준다. JAVA 표준 입력은 System.in으로 이루어진다. 
		System.out.println("첫번째 문자열을 입력하세요"); //ln 줄바꿈 하지않으면 붙어나온다
		int a = sc.nextInt(); // 자료형에서 배웠다 싶이 byte, short, long, float 
        //등등을 사용할 수 있다.
		System.out.println("두번째 문자열을 입력하세요");
		int b = sc.nextInt();
		System.out.println("입력된 값은 "+ a +"과 "+b +"입니다");
	
		sc.close();
	}
}

a = sc.nextInt(); 에서 입력커서가 기다리게 된다

실제 코드 실행 결과

입력된 값을 그대로 출력 해준다. 인터넷에 있는 일부 소스코드는 import java.util.Scanner ; 코드가 빠져있어서 그대로 복사하면 실행되지 않고 Problems이 발생한다. 이클립스에서는 ctrl + shift + o 하면 자동으로 import java.util.Scanner; 코드를 생성해준다.

이번에는 int 두개의 값을 비교해서 출력하는 if문 예제를 만들어보자

import java.util.Scanner; // Scanner를 import 한다, 단축키 Cttl+Shift+O
public class Main {
	public static void main(String[] args) {
		Scanner  sc = new Scanner (System.in); // Scanner는  받은 데이터를 
        //바이트로 변환하여 돌려준다. JAVA 표준 입력은 System.in으로 이루어진다. 
		
        System.out.println("첫번째 문자열을 입력하세요"); //ln 줄바꿈 하지않으면 붙어나온다
		int a = sc.nextInt(); // 자료형에서 배웠다 싶이 byte, short, long, float 
        //등등을 사용할 수 있다.
	
    	System.out.println("두번째 문자열을 입력하세요");
		int b = sc.nextInt();
        
        if ( a > b ) System.out.println(a + "은(는) " + b + "보다 큽니다");
        else System.out.println(a + "은(는) " + b + "보다 작습니다");
        
	
		sc.close();
	}
}

입력 코드는 다음과 같이 int를 필요할 때마다 선언하여 바로 작성할 수 도 있다. 대신 이 코드내에서는 같은값일때도 무조건 a가 b보다 작다고 출력해 버린다. 

그렇다면 출력문에 if 문과 else if 을 추가하여 어느것이 더 큰지, 혹은 같은지 출력해 보자.

import java.util.Scanner; // Scanner를 import 한다, 단축키 Cttl+Shift+O
public class Main {
	public static void main(String[] args) {
		Scanner  sc = new Scanner (System.in); // Scanner는  받은 데이터를 
        //바이트로 변환하여 돌려준다. JAVA 표준 입력은 System.in으로 이루어진다. 
		System.out.println("첫번째 문자열을 입력하세요"); //ln 줄바꿈 하지않으면 붙어나온다
		int a = sc.nextInt(); // 자료형에서 배웠다 싶이 byte, short, long, float 
        //등등을 사용할 수 있다.
		System.out.println("두번째 문자열을 입력하세요");
		int b = sc.nextInt();
//		System.out.println("입력된 값은 "+ a +"과 "+b +"입니다");
		if ( a > b ) System.out.println(a + "은(는) " + b + "보다 큽니다");
        else if ( b > a ) System.out.println(a + "은(는) " + b + "보다 작습니다");
        else System.out.println(a + "와(과) " + b + "는 같습니다.");
        
	
		sc.close();
	}
}

1차 예제

9와 1을 넣어서 작동이 잘되는 지 확인 해본다. 

2차 예제

같은 값을 넣어 보니 작동이 잘되는것을 알 수 있다.

또한가지 재미있는점은 Scannter의경우는 import 안하면 오류가도 나긴하는데, import 대신 패키지 명을 풀네임으로 지정하면 import해도  에러가 나지 않는다.

java.util.Scanner input_1 = new java.util.Scanner(System.in); 

이렇게 쓸 수 있다는 것이다. 비슷한 개념이 파이썬에도 from 모듈이름 import 기능 이렇게 보통 수행하거나 from 모듈이름 import *로 한번에 기능을 불러오는 작성법이 있는데, *로 모든 기능을 불러오면 해당 모듈에 있는 기능에 따라서 데이터 값을 바꿔버리는 일이 있기 때문에 본인은 작성시에 될수 있으면 기능 별로 modulename.modeulfunction으로 불러썻던 기억이 있다.

기본 입출력을 해보았으니 다음은 배열을 지정해서 넣어볼 생각이다.