有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我在输入CSV时出错了

我想问我在csv中犯了什么错误。 我有一个“设置”的用户输入,我想将它“获取”到我的CSV文件中,但它仍然不起作用。 这是我的方法,用户在其中输入信息。它在“auswahlMenue”课上

public void transaktionslisteEinlesen() throws TransaktionIOException{

    System.out.println("Transaktionsliste einlesen");

    // Einlesen von lokalen Attributen
    String beschreibungstext = MeineEingabe.erfasseString("Beschreibungstext: ");
    double betrag = MeineEingabe.erfasseDouble("Betrag:");
    LocalDateTime localdatetime = LocalDateTime.now();
    String transaktionsart = MeineEingabe.erfasseString("Transaktionsart:");
    String iban = ibangen.generate();


    /*
     * Abspreichern der lokalen Attributen in den Konstruktor der Klasse
     * Transaktion
     */
    Transaktion transaktion = new Transaktion();

    transaktion.setIban(iban);
    transaktion.setBeschreibungstext(beschreibungstext);
    transaktion.setBetrag(betrag);
    transaktion.setTart(transaktionsart);
    transaktion.setZeitStempel(localdatetime);

    TransaktionCsv transCSV = new TransaktionCsv();
    transCSV.schreibTransaktionZeilenweiseRaus("transaktion" konto.getTransaktionListe());
    konto.addTransaktion(transaktion);
    System.out.println("\nTransaktionsliste wurde eingelesen!");
}

这就是我调用的方法。我打开项目中的文件进行检查

public void schreibTransaktionZeilenweiseRaus(String dateiname, ArrayList<Transaktion> transaktion) throws TransaktionIOException 
{
    File datei = new File(dateiname);
    try {
        BufferedWriter out = new BufferedWriter(new FileWriter(datei));
        for (Transaktion transaktion1 : transaktion) {
            out.write(transaktion1.getIban() + ";" +transaktion1.getZeitStempel() + ";" +transaktion1.getTart() + ";" + transaktion1.getBeschreibungstext() + ";" + transaktion1.getBetrag() + ";\n");
        }
        out.close();
    } catch (FileNotFoundException e) {
        throw new TransaktionIOException("Datei existiert nicht.");
    } catch (IOException e) { 
        throw new TransaktionIOException("Datei kann nicht geschrieben werden.");
    }
}

此方法是逐行读取交易

public ArrayList<String> liesTransaktionZeilenweiseEin(String dateiname) throws TransaktionIOException 
{
    ArrayList<String> zeilen = new ArrayList<String>();

    File datei = new File(dateiname);
    try {
        BufferedReader in = new BufferedReader(new FileReader(datei));
        String zeile = null;
        while ((zeile = in.readLine()) != null) {
            zeilen.add(zeile); 
        }
        in.close();
    } catch (FileNotFoundException e) {
        throw new TransaktionIOException("Datei existiert nicht.");
    } catch (IOException e) { 
        throw new TransaktionIOException("Datei kann nicht gelesen werden.");
    }

    return zeilen;
}

最后一个在CSV文件中搜索交易

public ArrayList<Transaktion> ermittleTransaktionAusCsv(ArrayList<String> zeilen) throws TransaktionCsvFormatException {
    ArrayList<Transaktion> transaktion = new ArrayList<Transaktion>();

    for (String zeile : zeilen) {
        String[] bestandteile = zeile.split(";");
        String iban = bestandteile[0];
        LocalDateTime zeitstempel;
        String transart =  bestandteile[2];
        String beschreibung = bestandteile[3];
        double betrag = 0.0;
        try {
            zeitstempel = LocalDateTime.parse(bestandteile[1]);
           betrag = Double.parseDouble(bestandteile[4]);
        } catch (NumberFormatException e) {
            throw new TransaktionCsvFormatException();  
        }
        transaktion.add(new Transaktion(iban,zeitstempel,transart,beschreibung,betrag));
    }

    return transaktion;
}

我希望你能帮助我,我很抱歉,我张贴了这么多的代码。我发了这么多,因为我真的很困惑

致意 绿茶


共 (1) 个答案

  1. # 1 楼答案

    我认为你把你的作者复杂化了。只需使用FileWriter。见下文:

    String path = "/path/";
    FileWriter writer = new FileWriter(path + dateiname + ".csv");
    writer.append("data1;data2;data3");
    writer.flush();
    writer.close();
    

    您可以看到此页面更详细:https://www.mkyong.com/java/how-to-export-data-to-csv-file-java/

    干杯