read, scanner

예림·2023년 8월 25일
0
  1. System.in.read()
    :입력한 값을 1byte 단위로 처리 합니다. byte로 입력을 받지만 코드를 사용할 때 값은 int형식으로 사용합니다. 이 때 아스키코드를 기준으로 숫자로 변환됩니다. 그 이유는 컴퓨터는 키보드의 있는 모든 키들을 문자로 인식합니다. 그래서 그 문자들을 숫자로 입력받는데 그 변환되어 입력된 숫자는 아스키코드를 통해 확인할 수 있다
    (아스키코드 : 각 문자를 7비트로 표현하므로 총 128(= 27)개의 문자를 표현된 숫자코드)
    이 때 메인메소드에 throws IOException(오류가 발생하면 처리하는 메소드)를 같이 입력을 해줘야합니다.


    말했듯이 키보드에서 누르는 숫자는 문자로 입력받기 때문에 문자'3'은 10진수로 '51'인 것을 확인 할 수 있습니다.

또한 int형식으로 값을 출력하지만 강제형변환으로 다른 형으로 출력할 수 있습니다.

  • 언어마다 다르지만 java에서 enter은 2byte로 인식합니다.
  • buffer메모리에서 값을 받으면 임시로 저장했다가 enter키로 출력을 하게 되는데 이때 enter키는 '\r,\n'이렇게 2byte로 남아있게 됩니다.
    그래서 다음에 또 read를 사용하고 싶으면 두 개를 상쇄시켜줘야 다시 입력을 받을 수 있게 됩니다.
    상쇄시키는 방법은 똑같이 System.in.read();를 2번 입력해주면 되는데 좀 더 간단한 방법으로 skip이 있습니다.
    System.in.skip();은 2를 입력하면 2번이 스킵되서 같은 역할을 합니다. 그러면 두 번 System.in.read();를 입력할 필요없이 한번에 상쇄시킬 수 있습니다. 참고로 read가 있는 영역에서만 skip을 사용할 수 있습니다.

2.scanner class
: - read같은 경우는 int로 값을 출력하여 원하는 경우 강제형변환을 시켜줘야하지만 scanner의 경우는 원하는 자료형으로 선택해서 입력받은 데이터를 원하는 자료형으로 처리할 수 있습니다.

  • 마찬가지로 java에서 만들어진 클래스를 사용하려면 import를 시켜줘야합니다.
  • 자동 import단축키는 'ctrl + shift + o'입니다.
  • new가 들어가야 정확한 새로운 객체를 만들어서 그래야 .을 찍었을 때 쓸 수 있는 메소드가 많아집니다.
    대표적으러 length()가 있음 변수만들 때
    String a = "abc"는 사실 String a = new String("abc");가 맞는데
    그걸 안해도 되게 java에서 이 기능을 포함시켜서 만든 것뿐입니다

//Scanner 객체 생성
Scanner scanner = new Scanner(System.in);

    //문자열 : next()
	//공백전까지만 입력을 받습니다. space바로 공백이 생기면 error가 뜹니다
	//숫자를 받아도 문자로 인식됩니다

    //숫자 : nextInt()

// 실수 : nextDouble()

	//문자 : next().charAt(index)
	//가져온 단어에 'charAt(index)'를 적용해서 , index번째 문자 사용
	//index는 0부터 시작


코드에서는 index의 0번째 문자를 사용한다고 되어 있으니 입력받은 값의 첫글자만 출력하여 값이 '안'만 나온 것이다.

//문장 : nextline()
// nextline은 enter키를 값으로 쳐서 입력을 받기 전에 전에 코드에서 enter키가 남아있다면
*scanner.nextLine();를 한번더 입력*해줌으로써 enter키를 상쇄 시켜야한다

profile
커피 잘 마시는 사람

0개의 댓글

관련 채용 정보