如何在java中输入10000个字符串

时间:2013-09-01 16:22:21

标签: java

我需要在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();
    }
}

3 个答案:

答案 0 :(得分:1)

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

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

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

或者您可以使用

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

代替。那会给你一个char数组,你需要将它转换回String。

答案 1 :(得分: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);

答案 2 :(得分:0)

查看Runtime Error (NZEC) in simple code以了解错误消息的可能原因。

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