2015-01-13 3 views
1

을 초과하면 안됩니다. Java에서 몇 가지 질문을 해결하고 질문에서이 줄을 보았습니다 ... "입력의 전체 크기는 300KB를 초과하지 않습니다.", "입력의 전체 크기는 ' t는 256 KB를 초과한다 "입력 내용이 xxx KB

나의 의심은 나의 입력이 저 값보다 적은지 어떻게 확인할 수 있는가이다.

는 사실을 확인하는
CountingInputStream (CountingInputStream input = new CountingInputStream(System.in);) 

사용하여 시도. 이 파일은 Google의 외부 jar 파일입니다.

하지만 온라인 컴파일러에서 솔루션을 제출할 때 CountingInputStream은 컴파일러가 처리하지 않습니다. 그래서 이것을 사용하지 않고 어떻게합니까? ... 일반적인 방법으로?

CountingInputStream input = new CountingInputStream(System.in);  
System.out.println("Enter Values: "); 

while (scanner.hasNext() && input.getCount() < (256 * 1024)) 

이 지금하고있는 메신저입니다 ...하지만 난 CountingInputStream를 사용하지 않고 내 입력을 제어 할 수있는 방법이있다. 친절하게 도와주세요

+1

다음 질문은 어디에 있습니까? 온라인 문제입니까? – markspace

+1

나는 그것이 입력의 특정 양을 받아 들일 뿐이라는 것을 의미한다고 생각하지 않는다. 그 문장에 대해 더 많은 상황을 줄 수 있습니까? –

+0

이들은 내 대학 질문입니다 @markspace – Dev

답변

1

바이트를 계산 한 후 바이트 수는 몇 가지 임계 값을 초과하는 경우 예외를 throw 할 수있는 read 메서드를 재정의, InputStream를 장식 자신의 클래스를 작성한다. 운전사는 다음과 같이 보일 수 있습니다 :

InputStream in = new ByteLimiterInputStream(new FileInputStream("file.bin")); 

while(...) 
    in.read(); 

너무 많은 데이터를 읽었을 때 예외가 발생합니다. ByteLimiterInputStream 클래스를 작성해야합니다. 이것은 결국 학문적 인 운동입니다. 자신의 뇌를 운동시키고 다른 사람들에게 대답을 요구하지 마십시오.

0

InputStream을 사용하고 read() 메서드를 호출하고 카운터를 증가시킵니다.

read()은 단일 바이트 또는 스트림 끝에서 -1을 반환합니다.

int MAX = 256 * 1024; 
int count = 0; 

while (true) { 

    int return = is.read(); 
    if (return == -1) break; 

    if (++count >= MAX) { 
    // maximum limit reached 
    } else { 
    // store the byte somewhere, do something with it... 
    } 

} 
+2

이 괜찮을 것 같아요 .. 난 int MAX = 256 * 1024라고 생각합니까? – Dev

+1

다릅니다. http://en.wikipedia.org/wiki/Kilobit –

관련 문제