我是这个论坛的新手,所以如果我没有在正确的位置发布此信息,请告诉我。我一直在尝试编写一个简单的程序,该程序创建联系人列表并按姓氏对它们进行排序。但是,我很难将这个My
<select class="text_select" id="dropdown_1" name="dropdown_1">
<option value="">- Select -</option>
<option value="Father">Father's</option>
<option value="Mother">Mother's</option>
<option value="Sister">Sister's</option>
<option value="Brother">Brother's</option>
<option value="Husband">Husband's</option>
<option value="Wife">Wife's</option>
<option value="Son">Son's</option>
<option value="Daughter">Daughter's</option>
<option value="Grandfather">Grandfather's</option>
<option value="Grandmother">Grandmother's</option>
<option value="Aunt">Aunt's</option>
<option value="Uncle">Uncle's</option>
<option value="Cousin">Cousin's</option>
<option value="Father-in-Law">Father-in-Law's</option>
<option value="Mother-in-Law">Mother-in-Law's</option>
<option value="Sister-in-Law">Sister-in-Law's</option>
<option value="Brother-in-Law">Brother-in-Law's</option>
<option value="Niece">Niece's</option>
<option value="Nephew">Nephew's</option>
<option value="Grandson">Grandson's</option>
<option value="Granddaughter">Granddaughter's</option>
<option value="Great-Aunt">Great-Aunt's</option>
<option value="Great-Uncle">Great-Uncle's</option>
</select>
<select class="text_select" id="dropdown_2" name="dropdown_2">
<option value="">- Select -</option>
<option value="Father">Father</option>
<option value="Mother">Mother</option>
<option value="Sister">Sister</option>
<option value="Brother">Brother</option>
<option value="Husband">Husband</option>
<option value="Wife">Wife</option>
<option value="Son">Son</option>
<option value="Daughter">Daughter</option>
<option value="Grandfather">Grandfather</option>
<option value="Grandmother">Grandmother</option>
<option value="Aunt">Aunt</option>
<option value="Uncle">Uncle</option>
<option value="Cousin">Cousin</option>
<option value="Father-in-Law">Father-in-Law</option>
<option value="Mother-in-Law">Mother-in-Law</option>
<option value="Sister-in-Law">Sister-in-Law</option>
<option value="Brother-in-Law">Brother-in-Law</option>
<option value="Niece">Niece</option>
<option value="Nephew">Nephew</option>
<option value="Grandson">Grandson</option>
<option value="Granddaughter">Granddaughter</option>
<option value="Great-Aunt">Great-Aunt</option>
<option value="Great-Uncle">Great-Uncle</option>
</select>
<br /><br /><br />
<label class="row_1">My <span id="first"></span> <span id="second"></span></label>
<br />
<label class="row_2">My <span id="third"></span> <span id="fourth"></span></label>
列表保存到TreeMap
文件中。
有人可以给我一些建议吗?
.txt
答案 0 :(得分:1)
添加outputWriter.flush()
更新代码:
import java.io.*;
import java.util.*;
public class ContactList {
public static void main(String[] args) {
try {
TreeMap<String, List<String>> lastName = new TreeMap<String, List<String>>();
Scanner input = new Scanner(System.in);
int choice;
int secondChoice;
boolean exit = true;
int i = 0;
System.out.println("Would you like to add a contact?" + " Type 1 for yes");
choice = input.nextInt();
if (choice == 1) {
while (exit == true) {
// try adding a second tree map
List<String> array = new ArrayList<String>();
System.out.println("key " + lastName.isEmpty());
System.out.println("Plese add first name");
array.add(input.next());
System.out.println("Plese add phone number");
array.add(input.next());
System.out.println("Plese add email address");
array.add(input.next());
System.out.println("Plese add last name");
String last = input.next();
lastName.put(last, array);
System.out.println("This is what you just entered: " + lastName);
System.out.println("\nWould you like to add another contact?" + " Type 1 for yes - 2 for no");
secondChoice = input.nextInt();
if (secondChoice == 1) {
exit = true;
String hold = lastName.toString();
System.out.println(hold);
} else {
for (Map.Entry product : lastName.entrySet()) {
System.out.println(product.getKey() + " : " + product.getValue());
}
File f1 = new File("Contacts.txt");
System.out.println("\nLoading contacts into Contacts.txt ...");
BufferedWriter outputWriter = null;
outputWriter = new BufferedWriter(new FileWriter(f1));
for (Map.Entry<String, List<String>> entry : lastName.entrySet()) {
String key = entry.getKey();
List<String> value = entry.getValue();
outputWriter.write(key + value);
}
System.out.println("File location: " + f1.getAbsolutePath());
exit = false;
input.close();
outputWriter.flush();
outputWriter.close();
}
}
} else {
System.out.println("Thank you for using my program");
exit = false;
}
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
}
答案 1 :(得分:0)
我认为在使用资源后关闭它很重要。在帖子的代码中,使用了io对象BufferedWriter
和FileWriter
,使用它们之后需要将其关闭。在此应用程序中,写入文本文件是一个简单的输出操作,并且使用BufferedWriter
之类的资源来有效地写入大量数据或通过网络。
可以使用PrintWriter
来简单地写入文本文件,如本例所示。 PrintWriter
有一个println
方法,该方法写入String
行,并在该行的末尾添加一个行终止符。这意味着输出文件将每个联系人的联系方式写为一行。
代码如下:
String fileName = "Contacts.txt";
System.out.println("\nLoading contacts into " + fileName + "...");
PrintWriter writer = new PrintWriter(fileName);
for (Map.Entry product : lastName.entrySet())
{
System.out.println(product.getKey() + " : " + product.getValue());
writer.println(product.getKey() + ", " + product.getValue());
}
writer.close(); // Important: close the io resource after using it.