책 예제문제 보는데 k=(char) System.in.read 이런식으로 스캐너 안쓰고 그냥 문자열 받아오기 쓰더라구
수학 기호는 문자가 아니라 문자열이라 스캐너 못쓰는거야?
k=s.nextChar(); 이런식으로하면 오류뜨던디
- dc official App
댓글 14
수학기호 처럼 문자 하나를 입력값으로 받는경우 (위의예시처럼) 굳이 스캐너를 이용해서 가져올 필요 없음.(비효율적) System.in.read() 메소드는
익명(119.82)2022-04-16 19:25
답글
'문자 하나'를 아스키코드로 변경해서 반환하는 메소드이기 때문에 스캐너를 사용하지 않고 바로 입력값을 가져와서 char형태로 형변환해준것. 그리고 scanner 클래스에는 nextChar()란 메소드없음
익명(119.82)2022-04-16 19:27
답글
아하진짜땽큐 - dc App
익명(121.174)2022-04-16 19:30
답글
아 문자 입력한걸 스캐너 사용 없이(비효율적) system.in.read()로 값을 받아온 후에 그걸 (char)을 통해 문자로 형변환, 이후 액션인거지? - dc App
익명(121.174)2022-04-16 19:43
답글
궁금한건 저기서 System.in.read 앞에 (char)을 꼭 붙여줘야하냐 이건데, 빼보니까 오류가 뜨네
이게 System.in.read는 그냥 입력값을 딱 받아오기만 하고 이게 정수인지 실수인지 문자인지 문자열인지 모르는 함수니까 앞에 형변환태그로 이게 어떤문자다 지정해준후에 k라는 변수 안에 넣어주는거야? - dc App
익명(121.174)2022-04-16 19:44
답글
System.in.read() 의 반환타입은 int임. 너가 char로 선언한 변수 k에 int타입의 값을 할당하려고 했기 때문에 에러가 발생한거임. char k = 1; <-- 불가능하잖아. 얘를 char k = (char) 1 이렇게 해준거지
익명(119.82)2022-04-16 19:51
답글
ㅇㅎ 쉽게말해 System.read.in() 반환 디폴트값이 int라는거지? 확실히 위에서 char k; 이거를 int k; 해주니까 오류없네 - dc App
그거 디씨에 글쓸때 태그같은거 완벽하게쓰면 막 오류뜨면서 안써질때가 있더라 뭐였는진 기억안나는데 println쪽이었나?
그래서 prinㅡtln 이런식으로 중간에 다른거넣어주면 글써짐 - dc App
익명(121.174)2022-04-16 20:14
답글
System.in을 보면 System 클래스 내에 in이라는 필드가 InputStream 타입으로 선언되어있음. 너가 콘솔창이나 터미널에서 입력하는 값들을 쟤를 통해서 연결이 되는것. 이후 read()를 통해 입력을 할수 있게 하는건데 read()메소드가 입력받은 문자를 해당 문자의 시스템이나 운영체제의 인코딩 형식의 10진수(int)형태로 값을 저장함. 그래서 너가 a라는 문자를 입력해도 얘가 그에 대응되는 int형으로 값을 저장하기 때문에 너가 입력한 문자가 제대로 출력이 안됨. 궁금하면 아스키코드표를 보면서 확인해봐. System.in.read()로 입력받고 int 변수에 저장한 뒤에 출력해봐 a라는 값을 입력하면 아스키코드표에 대응되는 10진수 값인 97이 출력 될거임.
익명(119.82)2022-04-16 20:17
답글
이처럼 read()메소드가 너가 입력한 문자를 10진수(int)로 저장하기 때문에 너가 입력했던 문자를 그대로 출력하기 위해서 (char)로 형변환 해주는거임
수학기호 처럼 문자 하나를 입력값으로 받는경우 (위의예시처럼) 굳이 스캐너를 이용해서 가져올 필요 없음.(비효율적) System.in.read() 메소드는
'문자 하나'를 아스키코드로 변경해서 반환하는 메소드이기 때문에 스캐너를 사용하지 않고 바로 입력값을 가져와서 char형태로 형변환해준것. 그리고 scanner 클래스에는 nextChar()란 메소드없음
아하진짜땽큐 - dc App
아 문자 입력한걸 스캐너 사용 없이(비효율적) system.in.read()로 값을 받아온 후에 그걸 (char)을 통해 문자로 형변환, 이후 액션인거지? - dc App
궁금한건 저기서 System.in.read 앞에 (char)을 꼭 붙여줘야하냐 이건데, 빼보니까 오류가 뜨네 이게 System.in.read는 그냥 입력값을 딱 받아오기만 하고 이게 정수인지 실수인지 문자인지 문자열인지 모르는 함수니까 앞에 형변환태그로 이게 어떤문자다 지정해준후에 k라는 변수 안에 넣어주는거야? - dc App
System.in.read() 의 반환타입은 int임. 너가 char로 선언한 변수 k에 int타입의 값을 할당하려고 했기 때문에 에러가 발생한거임. char k = 1; <-- 불가능하잖아. 얘를 char k = (char) 1 이렇게 해준거지
ㅇㅎ 쉽게말해 System.read.in() 반환 디폴트값이 int라는거지? 확실히 위에서 char k; 이거를 int k; 해주니까 오류없네 - dc App
아니아니 system.in.read - dc App
본문도 잘못썻구나 자바에서 char은 문자인데 DB랑 헷갈려서 헷갈려서 문자열인줄.. - dc App
글이안써져 뭐야
그거 디씨에 글쓸때 태그같은거 완벽하게쓰면 막 오류뜨면서 안써질때가 있더라 뭐였는진 기억안나는데 println쪽이었나? 그래서 prinㅡtln 이런식으로 중간에 다른거넣어주면 글써짐 - dc App
System.in을 보면 System 클래스 내에 in이라는 필드가 InputStream 타입으로 선언되어있음. 너가 콘솔창이나 터미널에서 입력하는 값들을 쟤를 통해서 연결이 되는것. 이후 read()를 통해 입력을 할수 있게 하는건데 read()메소드가 입력받은 문자를 해당 문자의 시스템이나 운영체제의 인코딩 형식의 10진수(int)형태로 값을 저장함. 그래서 너가 a라는 문자를 입력해도 얘가 그에 대응되는 int형으로 값을 저장하기 때문에 너가 입력한 문자가 제대로 출력이 안됨. 궁금하면 아스키코드표를 보면서 확인해봐. System.in.read()로 입력받고 int 변수에 저장한 뒤에 출력해봐 a라는 값을 입력하면 아스키코드표에 대응되는 10진수 값인 97이 출력 될거임.
이처럼 read()메소드가 너가 입력한 문자를 10진수(int)로 저장하기 때문에 너가 입력했던 문자를 그대로 출력하기 위해서 (char)로 형변환 해주는거임
우와 초고수 진짜고마워 외 - dc App