1

我可以对我正在处理的代码的一部分使用一些帮助。我做了一个方法,我认为将 .txt 文件的每一行都转换为数组中的单独元素。但是,我现在希望能够在它们中搜索并使程序打印整个元素。即:其中一行内容为:Crow,M,Kansas,june2012 我想我能够将它变成一个数组。现在,我希望能够搜索“crow”,并能够将其中包含该单词的所有元素与元素中字符串的其余部分一起打印。我到目前为止的代码: System.out.println("Her kan du soke etter registrerigner etter fugletype");

 try {
     Scanner sc = new Scanner(new File("fugler.txt"));
     List<String> lines = new ArrayList<String>();
     while (sc.hasNextLine()) {
     lines.add(sc.nextLine());
     }

     String[] arr = lines.toArray(new String[lines.size]);

 }catch (Exception e) {
 }
4

3 回答 3

1

正如其他人已经指出的那样,您不需要将行放入数组中,因为您已经将它们放在ArrayList.

如果你想“搜索”行并且只打印你可以使用的某些行contains

 try {
     Scanner sc = new Scanner(new File("fugler.txt"));
     List<String> lines = new ArrayList<String>();
     while (sc.hasNextLine()) {
         lines.add(sc.nextLine());
     }

     for (String line : lines) {
         if(line.contains("yourSearchString")) {
             System.out.println(line);
         }
     }

 } catch (Exception e) {
 }
于 2013-09-25T20:17:42.340 回答
0

除了其他问题,如果你想要一个数组,你应该替换这个:

String[] arr = lines.toArray(new String[0]);

有了这个:

String[] arr = lines.toArray(new String[lines.size()]);

传入的数组是将由 填充的数组toArray,因此它需要足够大以容纳所有元素。

如果你想搜索一些值line,你可以使用原来的ArrayList<String>

// returns the index of the element, ie. its zero-based line number
int index = lines.indexOf(line);

要全部打印它们,只需遍历它们:

for(String l : lines) {
   System.out.println(l);
}
于 2013-09-25T20:11:33.777 回答
0

首先,您不需要将行放在数组中。您已经将它们列在列表中。

您可以在它们进来时打印它们:

while (sc.hasNextLine() {
    String currentLine = sc.nextLine();
    System.out.println(currentLine);
    lines.add(currentLine);
}

或者,您可以打印列表中的所有行:

for (String line : lines) {
    System.out.println(line);
}
于 2013-09-25T20:12:15.423 回答