扫描仪可以读取多远(用Java)?我可以修改它吗?

时间:2017-02-20 13:49:09

标签: java

我需要输入一个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();
    }
}

}

1 个答案:

答案 0 :(得分:0)

您的输入包含62行和186字(61185,不包括第一行)。如果你想阅读所有单词,你可以使用它:

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未使用。如果您想阅读不超过t100)个字词,请尝试以下操作:

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();
}