수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

System.in.read(int[],int,int) 이상한게 있어요.!

가을빛

2026.01.24

import java.io.*;
public class ReadCharactersOffset
{
public static void main(String args[]){
try{
int bufferCapacity = 80;
int size=0;
int dataRead;
byte buffer[] = new byte[bufferCapacity];
while((dataRead = System.in.read(buffer, size, bufferCapacity-size)) = 0){
size += dataRead; // 다음 문장을 읽을 수 있도록 한다.
System.out.print(bufferCapacity-size);
}
System.out.write(buffer, 0, size);
}catch(IOException e){
System.err.println(스트림으로부터 데이터를 읽을 수 없습니다.);
}
}
}이 예제는 책에 있던건데요.

저 코드에 쓰인 read() 메소드는 스트림으로부터 bufferCapacity-size개의 데이터를 읽어서

buffer배열의 size위치부터 차례로 저장되는 거잖아요.

bufferCapaciry-size 부분이 좀 이상합니다.만약에 처음에 안녕하세요라는 말을 입력하고 엔터를 쳤다고 가정하면

스트림에 10바이트+케리지리턴+뉴라인값해서 총 12바이트의 메모리를(?) 사용하게 됩니다.
그래서 offset은 12가 되어서 다음에 입력받을 내용을 buffer의 12부터 쓰게 됩니다.

그런데입력받은 스트림에서 처음에 bufferCapacity-size(80이죠)을 입력받고 다음에

는(80-12) 68만큼의 데이터를 읽어오는 까닭은 무엇인지요? ㅠㅠ
스트림에 있는안녕하세요를 가지고 오려면

그냥 size(10)만저 자리에 들어가면 되는거 아닌가요??

고수님들의 답변을 ㅠㅠ

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 지지않는 2026-01-24

    즉 \안녕하세요\를 입력하였으면 님이 말씀하신대로 12바이트를 입력 받습니다. 하지만 이것은 처음에 정해준 버퍼크기(80바이트)보다 작기 때문에 계속 입력받으려고 대기합니다. 80바이트가 다 찰때까지 무한으로 대기합니다. 그러다가 80바이트가 다 입력되면 드디어 출력하러 갑니다. 출력내용은 80바이트의 모든 내용이구요.
    님이 원하시는 \안녕하세요\만 출력하려면 System.out.write(buffer, 0, 10); 을 출력하면 되겠군요

  • 월향 2026-01-24

    프로그램을 보니 버퍼의 크기를 80으로 잡아 놓고 그 곳에 입력 데이터가 꽉 찰때까지 계속 입력을 받습니다.
    즉 80바이트를 모두 입력 받아야지만이 출력하는 곳으로 가는 것이지요. 출력도 버퍼안의 모든 내용(80바이트)를 출력하는 것이구요.

번호 제 목 글쓴이 날짜
2752024 소숫점 뺄셈 !! ㅠㅜ 초롬 2026-10-20
2751970 자바 게임 만들려는데 부탁드립니다 (1) 라온제나 2026-10-19
2751908 자바스크립트 처리속도를 체크할 수 있는 방법 있나요? (1) 테이 2026-10-19
2751822 그누보드 아이프레임으로 구현했는데 제목 클릭해서 들어가면 푸터가 동동...떠다녀요 내꺼하자 2026-10-18
2751790 자바 그래픽 관련을 공부하고 싶은데요.. 어디 좋은 사이트나 책 없을까요?? (1) 큰재 2026-10-18
2751733 CTF가머죠? (5) 두동 2026-10-17
2751709 배열부분 궁금한 부분이있습니다. 딸기우유 2026-10-17
2751677 포인터 책을 보다가,,, (2) 동백 2026-10-17
2751648 익스플로 버전에 따라서 생기는 공백.. (1) 모아 2026-10-17
2751623 DEL 태그의에서 선굵기 및 컬러지정이 가능한가 해서요~ (4) 비치나 2026-10-16
2751573 테마 업로드 에러.. (1) 꽃 2026-10-16
2751548 수학? 물리?? (3) 찬늘 2026-10-16
2751461 상단네비 fixed ie6 핵 해결방안이 있을까요? 맑다 2026-10-15
2751436 레이아웃을 잡고 코딩을 하는데 드림위버에서의 결과와 IE에서 결과가 다르게 나오네요. (3) 키클 2026-10-15
2751403 형들좀도와주세요string compression (1) 알렉산더 2026-10-14
2751349 링크 다운로드하기 팬지 2026-10-14
2751295 c++한번도 손않댄 사람이... 날위해 2026-10-13
2751267 플래시8 사용에서 플레이어 만들었는데요 (1) 블1랙캣 2026-10-13
2751182 회원가입 파랑새 2026-10-12
2751152 소셜 플러그인 문제입니다. 얀 2026-10-12
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com