如何在Java中输入超过4095个字符的行?



我不知道为什么l String的长度不超过4095,无论我作为输入给出的行有多长。我真的不知道错在哪里。我认为这是一个终端规则,但我如何在Java中绕过它?正如你所看到的,我使用BufferedReader和它的readLine()方法,我需要读取大比例的行。

import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Krazki {
public static int solve() {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String l = br.readLine();
int n = Integer.parseInt(l.split("\s")[0]);
int m =  Integer.parseInt(l.split("\s")[1]);
if(n < m) {
return 0;
}
int[] width = new int[n + 2];
width[0] = Integer.MAX_VALUE;
l = br.readLine();
String[] line = l.split("\s", n);
for(int i = 1; i <= n;i++){
width[i] = Math.min(width[i-1], Integer.parseInt(line[i-1]));
}
width[n + 1] = 0;
int res = n + 1;
line = br.readLine().split("\s");
for(int i = 0; i < m; i++){
if(res > 0) {
res--;
}
while(width[res] < Integer.parseInt(line[i])) {
res--;
}
}
br.close();
return res;
}
catch(Exception e) {
e.printStackTrace();
return -1;
}
}
public static void main(String[] args) {
System.out.println(solve());
}
}

(实际上1)在Java中可以输入的行长度没有限制。

如果您看到行长度限制为4096个字符,那么可能是您用来输入数据的命令shell或控制台应用程序强加的。这不是一个可以直接在Java应用程序中解决的问题。

线路长度限制通常是特定于操作系统的,需要通过特定于操作系统的方法来解决。

但是,更实际的方法是将应用程序更改为:

  • 从文件中获取输入,其中不应该有任何行长度限制,或者
  • 实现一个行延续语法,允许用户输入过长的行作为多行。

1 -应用程序可能无法处理超过~231字符的行,因为StringStringBuffer使用数组,而数组仅限于这么多元素。此外,应用程序通常需要足够的内存来保存完整的行。

最新更新