簡體   English   中英

在.txt文件中讀取整數並存儲在arraylist中

[英]Reading integers in .txt file and store in arraylist

我知道這個問題可能會回答很多次。 但是,我仍然無法解決此特定問題。

基本上我有一個.txt文件,格式如下。

String Integer String

例如,

la 789 ferrari
turbo 560 porsche
veyron 987 bugatti
sls 563 benz
dbs 510 aston

如何才能逐行讀取文件並將數字/整數僅存儲到arraylist中?
謝謝!

ArrayList<int> list = new ArrayList<int>();

try {

    BufferedReader br = new BufferedReader(new FileReader("file.txt"));
    String line = br.readLine();

    while(line != null)
    {
         String[] tokens = line.Split(" ");
         list.Add(Integer.parseInt(tokens[1]));
         line = br.readLine()

    }
catch(Exception e)
{
    //Probably a conversation exception or a index out of bounds exception
}

這是一個更完整的Java風格的解決方案,使用Java 7 ...很有趣。

Main.java

import java.util.List;

public class Main
{
    private static final InputFileParser inputFileParser = new InputFileParser();
    private static final EntryNumberExtractor extractor = new EntryNumberExtractor();
    private static final String FILENAME = "input-file.txt";

    public static void main(String... args) 
    {
        List<Entry> entries = inputFileParser.parse(FILENAME);
        List<Integer> extractedIntegers = extractor.extract(entries);

        System.out.println("Entries: ");
        prettyPrintListItems(entries);

        System.out.println();

        System.out.println("Entry numbers: ");
        prettyPrintListItems(extractedIntegers);
    }

    private static <T> void prettyPrintListItems(List<T> list)
    {
        for (T item : list)
        {
            System.out.println(item);
        }
    }
}

InputFileParser.java

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class InputFileParser
{
    public List<Entry> parse(String filename)
    {
        List<Entry> entries = new ArrayList<>();
        File f = new File(filename);
        try (BufferedReader reader = new BufferedReader(new FileReader(f));)
        {
            String line = null;
            while ((line = reader.readLine()) != null) 
            {
                String[] components = line.split(" ");
                entries.add(new Entry(components[0], Integer.parseInt(components[1]), components[2]));
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        return entries;
    }
}

EntryNumberExtractor.java

import java.util.ArrayList;
import java.util.List;

public class EntryNumberExtractor
{
    public List<Integer> extract(List<Entry> entries)
    {
        List<Integer> integers = new ArrayList<>();
        for (Entry e : entries) 
        {
            integers.add(e.getNumber());
        }
        return integers;
    }
}

Entry.java

public class Entry
{
    private String model;
    private int number;
    private String company;

    public Entry(String model, int number, String company)
    {
        this.model = model;
        this.number = number;
        this.company = company;
    }

    public Integer getNumber()
    {
        return number;
    }

    @Override
    public String toString() 
    {
        return "model: " + model + ", number: " + number + ", company: " + company;
    }
}

您可以閱讀每一行並將行字符串按空格分割,檢索數字並將其存儲在數組列表中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM