我知道這個問題可能會被回答很多次。但是,我仍然無法解決這個具體問題。讀取.txt文件中的整數並存儲在arraylist中
基本上我有一個.txt文件,格式如下。
String Integer String
例如,
la 789 ferrari
turbo 560 porsche
veyron 987 bugatti
sls 563 benz
dbs 510 aston
我如何逐行讀取文件中的行和數字/整數只存儲到數組列表?
謝謝!
我知道這個問題可能會被回答很多次。但是,我仍然無法解決這個具體問題。讀取.txt文件中的整數並存儲在arraylist中
基本上我有一個.txt文件,格式如下。
String Integer String
例如,
la 789 ferrari
turbo 560 porsche
veyron 987 bugatti
sls 563 benz
dbs 510 aston
我如何逐行讀取文件中的行和數字/整數只存儲到數組列表?
謝謝!
這裏有一個更完整的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;
}
}
哇很好的努力!但是,當我在終端中編譯時,它會返回一個錯誤。在main.main(Main.java:11) – user2875021
線程「主」java.lang.ArrayIndexOutOfBoundsException異常:1 \t在輸入文件夾.parse 。仔細檢查您的內容是否與上面張貼的內容完全相同。我已經包含了代碼,以便您可以將它用作工作示例,並且能夠調試並識別它的缺點,您可能需要添加額外的錯誤處理(例如,如果行不能用空格分隔兩次) 。 –
是的.txt文件是完全一樣,我只有一個單獨的空間上面張貼。我也嘗試了另一個示例答案,它也給出了相同的編譯錯誤。 (ArrayIndexOutOfBoundsException) – user2875021
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
}
但你有沒有試過至少? –