java - ArrayList困惑

标签 java string list arraylist java.util.scanner

下面的代码是我尝试从字符串文件中读取数据,读取每一行,直到找到“:”,然后存储+打印之后的所有内容。但是打印函数打印出我从文件中读入的所有内容。有人能发现我哪里出错了吗?谢谢

编辑:每行都采用这种格式“此处有一些文本:此处有更多文本”

public void openFile() {

        try {
            scanner = new BufferedReader(new FileReader("calendar.ics"));
        } catch (Exception e) {
            System.out.println("Could not open file");

        }

    }

    public void readFile() {
        ArrayList<String> vals = new ArrayList<String>();
        String test;

        try {
        while ((line = scanner.readLine()) != null)
        {

        int indexOfComma = line.indexOf("\\:"); // returns firstIndexOf ':'
        test = line.substring(indexOfComma+1);  // test to be everything after ':'
        vals.add(test);  // add values to vals
        }
        }  catch(Exception ex){ }

            for(int i=0; i<vals.size(); i++){
         System.out.println(vals.get(i));
    }
    } 

最佳答案

你不需要逃离你的冒号。

line.indexOf("\\:");

将上面的行更改为:-

line.indexOf(":"); 

因为,它将搜索 \\:,如果没有找到,则返回值 -1

test = line.substring(indexOfComma+1); 

因此,如果您的 indexComma-1(如果您的字符串不包含 - \\:,那么肯定会是这样),那么你上面的行变成:-

line.substring(0);  // same as whole string
<小时/>

建议,在声明列表时,您应该将抽象类型作为引用类型。因此,您应该在 List 声明的 LHS 上使用 List 而不是 ArrayList: -

List<String> vals = new ArrayList<String>();

关于java - ArrayList困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13545150/

相关文章:

c++ - 构造函数初始化列表中的函数?

java - Android JSON 与 REST

java - Android:从头开始重建现有项目

java - 认证后转到特定的jsp页面(spring security)

java : Common pattern in public keys in RSA encryption

string - Format polynomial to normal form> (如何让最后的结果在lisp中变成string?(包括所有函数))

Python - 在字符串上打印变量

python - 提取大写前的元素

具有意外结果的 Python 数字列表排列

c# - 获取c#代码文件中的所有字符串