안녕하세요. 항상 좋은 답변 감사합니다! 혼자 공부를 하는데 구글에 찾아도 이해하기 어려울때마다 해시코드를 찾고 있습니다. 정말로 감사합니다.
io를 공부하고 있는데 출력값이 이상해서 여쭤보려고 왔습니다.
package streamEx;
import java.io.IOException;
public class inputStreamTest2 {
public static void main(String[] args) {
byte[] input = new byte[5];
int i = 0;
int cnt = 0; // count
int tot = 0; // total
System.out.println("컨솔창에 입력하여라!");
try {
while((i= System.in.read(input)) != -1){
cnt++; // 반복문 횟수
tot += i;
System.out.println("i: "+i);
System.out.write(input, 0, i);
} System.out.println("cnt: "+cnt);
System.out.println("읽은 byte수: "+tot);
System.in.close();
System.out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
제가 AppleTest라고 이클립스에 입력을 하면
i: 5
Applei: 5
Test
i: 1
이렇게 출력되나
cmd를 통한 출력을 하게 되면
i: 5
Applei: 5
i: 1t
이렇게 출력됩니다.
제가 생각했을 때는
i: 5
Applei: 5
i: 1
Test
으로 되어야한다고 생각했는데
- cmd에선 왜 덮어씌어서 출력이 될까요?
그리고 이클립스와 cmd의 출력의 차이가 왜 있는 것일까요?
배열에 대한 메모리구조에 대해 질문있습니다. 소스를 보시면 input이라는 5byte짜리 배열을 선언했는데 제가 "AppleTest"라는 글자를 넣으면 '/r''/n' 까지 포함하여 11byte를 입력한건데 오버플로우가 안되고 왜 전부다 출력이 되는건지 궁금합니다. 설명을 보면 input스트림에
"_ _ _ _ /n /r t e s T e l p p A "(_는 빈칸입니다.)
입력이 되고, output스트림에는
" i:5\nApllei:5Test\ri:1\n\n "
로 입력이 된다는데 그럼 input[0] = "Apple", input[1] = "Test\r", input[2] ="\n" 이런식으로 들어간다는 말인가요??
비오는데 감기조심하세요~~~