[英]Linked List from text file (trouble printing)
我需要從一個文本文件中創建一個鏈接列表,如下所示:
john, peter, maria, dan, george, sonja
fred, steve
ann, tom, maria
//etc...
我想在每行(領導者)中打印名字,並在行中(與該名稱相關聯)打印其余名稱。
因此,例如:
Leader: John Friends: peter, maria, dan, george, sonja Friend Count: 5
Leader: Fred Friends: steve Friend Count: 1
//etc...
這是我到目前為止的內容:
import java.util.*;
import java.io.*;
import javax.swing.JFileChooser;
public class Test {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<String>();
LinkData ld1 = new LinkData();
JFileChooser chooser = new JFileChooser(".");
int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: "
+ chooser.getSelectedFile().getName()
+ "Print some info"
// open and read file:
Scanner scanner = null;
try {
scanner = new Scanner(chooser.getSelectedFile());
} catch (IOException e) {
System.err.println(e);
error();
}
if (scanner == null)
error();
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
Scanner lineScan = new Scanner(line);
lineScan.useDelimiter(", ");
// System.err.println("The line that was scanned: " + line);
String leader = lineScan.next();
while (lineScan.hasNext()) {
list.add(lineScan.next());
}
System.out.println("Leaders include_" + leader + list.toString());
}
}
}
private static void error() {
System.err.println("An error has occurred: bad data");
System.exit(0);
}
}
現在,名字打印得很好,但是鏈接列表卻在不斷增長,因此結果無法按照我想要的方式打印...
您應該clear() 2行讀取之間的列表
while (scanner.hasNextLine()) {
list.clear();
//...
}
您走在正確的軌道上。 您正在將每一行處理為leader
和friends
列表。 您將需要跟蹤另一個對象中的每個實體-我建議使用Map。 就像是:
Map<String, List<String>> leaderMap = new HashMap<String, List<String>>();
// ...
String leader = lineScan.next();
while (lineScan.hasNext()) {
list.add(lineScan.next());
}
leaderMap.put(leader, list);
不要忘記為從文件中讀取的每一行重新初始化列表。 最后,您可以迭代地圖,打印鍵( leader
)和關聯列表的大小( number of friends
)。 祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.