-2

我需要在java中的程序中将10000个字符串作为用户的输入。但是当我使用正常方式时,它会在 ideone 和 spoj 中出现 NZEC 错误。我怎样才能将这样的字符串作为输入?

import java.io.*;
class st
{
    public static void main(String args[])throws IOException
    {
         String a;
         BufferedReader g=new BufferedReader(new InputStreamReader(System.in));
         a=g.readLine();
    }
}
4

3 回答 3

1

BufferedReader 使用足够大的缓冲区“用于大多数目的”。10000 个字符可能太大了。由于您使用的是 readLine,因此阅读器正在扫描读取的字符,寻找行尾。在其内部缓冲区已满后,仍然没有找到行尾,它会抛出异常。

您可以在创建 BufferedReader 时尝试设置缓冲区的大小:

BufferedReader g=new BufferedReader(new InputStreamReader(System.in), 10002);

或者你可以使用使用

BufferedReader.read(char[] cbuf, int off, int len)

反而。这会给你一个字符数组,你需要将它转换回字符串。

于 2013-09-01T16:56:34.973 回答
0

只需读取直到缓冲区已满。

byte[] buffer = new byte[10000];
DataInputStream dis = new DataInputStream(System.in);
dis.readFully(buffer);
// Once you get here, the buffer is filled with the input of stdin.
String str = new String(buffer);
于 2013-09-01T16:25:00.813 回答
0

查看简单代码中的运行时错误 (NZEC)以了解错误消息的可能原因。

我建议您将 readLine() 包装在 try/catch 块中并打印错误消息/堆栈跟踪。

于 2013-09-01T16:30:01.397 回答