我需要输入一个String数组(非常大的字符串,每个字符串大约3000个字符)。但是当我通过Scanner读取我的输入时,它并没有读取所有这些输入。例如,输入100行时,它只读取第63行 这是我在ideone上运行时得到的:http://ideone.com/57uugH 这是我的代码:
public class main {
public static void main(String[] args) {
try {
String s;
int t;
ArrayList<String> al = new ArrayList<>();
Scanner sc = new Scanner(System.in);
t = Integer.parseInt(sc.nextLine());
try {
while (sc.hasNextLine()) {
sc.reset();
s = sc.nextLine();
al.add(s);
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Numbers of Index in Arraylist: " + al.size());
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
您的输入包含62
行和186
字(61
和185
,不包括第一行)。如果你想阅读所有单词,你可以使用它:
String s;
int t;
ArrayList<String> al = new ArrayList<>();
Scanner sc = new Scanner(new InputStreamReader(System.in));
t = sc.nextInt();
try {
while (sc.hasNext()) {
s = sc.next();
al.add(s);
}
} catch (Exception e) {
e.printStackTrace();
}
在这种情况下,您的t
未使用。如果您想阅读不超过t
(100
)个字词,请尝试以下操作:
String s;
int t;
ArrayList<String> al = new ArrayList<>();
Scanner sc = new Scanner(new InputStreamReader(System.in));
t = sc.nextInt();
try {
while (sc.hasNext() && t-->0) {
s = sc.next();
al.add(s);
}
} catch (Exception e) {
e.printStackTrace();
}