我需要在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();
}
}
答案 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块中并打印错误消息/堆栈跟踪。