使用arraylist

时间:2018-11-18 14:09:01

标签: java file arraylist

我的程序是关于联系人的。 例如,当医生插入姓名,姓氏,电话时,每次他要将数据保存到txt文件中时,输出将是:

somename
somesurname
sometelephone

somename
somesurname
sometelephone
...

现在我所做的输出将仅在一行中: 您可以在代码中看到somename somesurname sometelephone

if(text.equals("Save")) {               
    try {       
        ArrayList<String> contactsinformations=new ArrayList<>();
        String name=tname.getText();
        String surname=tsurname.getText();
        String telephone=ttelephone.getText();
        contactsinformations.add(0,name+" ");
        contactsinformations.add(1,surname+" ");
        contactsinformations.add(2,telephone+" ");  

        FileWriter outFile = new FileWriter("Contacts.txt");
        BufferedWriter outStream = new BufferedWriter(outFile);                   
        for(int i=0; i<contactsinformations.size(); i++)
            outStream.write(String.valueOf(contactsinformations.get(i)));                
        outStream.close();
        JOptionPane.showMessageDialog(this,"Data saved.");  

    } catch(IOException e) {
        System.out.println("ERROR IN FILE");
    }
}

我使用for循环来获取ArrayList的大小,但试图弄清楚如何在不同的行中插入信息。

警告:更新的问题! 问题真的得到了解决!

if(text.equals("Save")) {               
                try
                {       

                    ArrayList<String> contactsinformations=new ArrayList<>();               
                    contactsinformations.add(tname.getText());
                    contactsinformations.add(tsurname.getText());
                    contactsinformations.add(ttelephone.getText());                 
                    FileWriter outFile = new FileWriter("Contacts.txt",true);
                    BufferedWriter outStream = new BufferedWriter(outFile);                   
                    for (int i = 0; i < contactsinformations.size(); i++) {
                        outStream.write(contactsinformations.get(i));   
                        outStream.newLine();
                    }
                    JOptionPane.showMessageDialog(this,"Data saved.");  
                    outStream.close();
                 }

4 个答案:

答案 0 :(得分:0)

使用:

outStream.write(contactsinformations.get(i) + "\n");

此处\n表示新行。

答案 1 :(得分:0)

  1. 由于ArrayList保留插入顺序,因此您无需精确调整index,并且可以省略无用变量name, surname, telephone

    contactsinformations.add(tname.getText());
    contactsinformations.add(tsurname.getText());
    contactsinformations.add(ttelephone.getText());
    
  2. 由于ArrayList的类型为String,因此不需要valueOf方法

    for (int i = 0; i < contactsinformations.size(); i++) {
        outStream.write(contactsinformations.get(i));
        outStream.newLine();
    }
    
  3. PrintWriter类具有一种可以在一次调用中完成全部操作的方法(在此处与for-each循环结合)

    PrintWriter pw = new PrintWriter(outFile);
    for (String contactsinformation : contactsinformations) {
        pw.println(contactsinformation);
    }
    

答案 2 :(得分:0)

john.tipcalculation()

答案 3 :(得分:0)

转换为CharArray并写入BufferedWriter

for(int i=0; i< contactsinformations.size(); i++) {
    String str = contactsinformations.get(i) + "\n";
    outStream.write(str.toCharArray(), 0, str.length()); 
}

或使用与上述相同的方式通过使用offset和length来编写String:

for(int i=0; i< contactsinformations.size(); i++) {
    String str = contactsinformations.get(i) + "\n";
    outStream.write(str, 0, str.length()); 
}