2015-01-13 1 views
1

im решение некоторых вопросов в java, и я сталкиваюсь с этой строкой в ​​вопросе ... «Общий размер ввода не превышает 300 КБ», «Общий размер ввода не работает», т превышать 256 КБ «Ввод не должен превышать xxx KB

Мое сомнение в том, как я могу убедиться, что мой ввод меньше этого значения.

я на самом деле пытались использовать

CountingInputStream (CountingInputStream input = new CountingInputStream(System.in);) 

, чтобы проверить его. это внешний файл jar от Google.

, но когда я отправляю свое решение в онлайн-компиляторы, 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

Написать свой собственный класс, который украшает InputStream, перекрывая метод read для подсчета байт, а затем бросить исключение, когда число байт превышает некоторый порог. Ваш водитель может выглядеть так:

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://ru.wikipedia.org/wiki/Kilobit –

Смежные вопросы