如何在Java中输入超过4095个字符的行?
How to input a line longer than 4095 characters in Java?
我不知道为什么无论我输入的行有多长,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 应用程序中直接解决的问题。
行长度限制通常 OS 特定,需要通过 OS 特定方式解决。
但是,更实用的方法是将您的应用程序更改为:
- 从不应有任何行长度限制的文件中获取输入,或者
- 实施续行语法,允许用户将过长的行作为多行输入。
1 - 应用程序可能无法处理超过 ~231 个字符的行,因为 String
和 StringBuffer
使用数组和数组仅限于那么多元素。此外,应用程序通常需要足够的内存来保存完整的行。
我不知道为什么无论我输入的行有多长,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 应用程序中直接解决的问题。
行长度限制通常 OS 特定,需要通过 OS 特定方式解决。
但是,更实用的方法是将您的应用程序更改为:
- 从不应有任何行长度限制的文件中获取输入,或者
- 实施续行语法,允许用户将过长的行作为多行输入。
1 - 应用程序可能无法处理超过 ~231 个字符的行,因为 String
和 StringBuffer
使用数组和数组仅限于那么多元素。此外,应用程序通常需要足够的内存来保存完整的行。