在 csv 文件中写入类的成员

问题描述 投票:0回答:2

我正在开发一个项目,其中有一个名为 Macchine(汽车)的类,我希望用户插入一辆新车,然后将其保存在 csv 文件中。

public static void inserimento(){
        List<Macchina> macchine = new ArrayList<>();
        String continua;
        do {
            System.out.println("Inserisci i dettagli della macchina:");
            
            System.out.print("Produttore: ");
            String produttoreinput = console.readLine();
            
            System.out.print("Modello: ");
            String modelloinput = console.readLine();
            
            System.out.print("Accelerazione (0-100 km/h in secondi): ");
            String accinputstr = console.readLine();
            double accinput = Double.parseDouble(accinputstr);
            
            System.out.print("Velocità Massima (km/h): ");
            String vmaxinputstr = console.readLine();
            double vmaxinput = Double.parseDouble(vmaxinputstr);

            System.out.print("Numero di porte: ");
            String numporteinputstr = console.readLine();
            int numporteinput = Integer.parseInt(numporteinputstr);
            

            macchine.add(new Macchina(produttoreinput, modelloinput, accinput, vmaxinput,                        numporteinput));

            System.out.print("Vuoi inserire un altro veicolo? (s/n): ");
            continua = console.readLine();
            
        } while (continua.equalsIgnoreCase("s"));

        // Salva i dati nel file
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("macchine.txt"))) {
            for (Macchina macchina : macchine) {
                writer.write(macchina.toString());
                writer.newLine();
            }
            System.out.println("I dati sono stati salvati nel file .");
        } catch (IOException e) {
            System.out.println("Errore durante il salvataggio dei dati: " + e.getMessage());
        }
    }

这是处理输入和保存的函数。

public String toString(){
        return "Produttore: " + super.getproduttore() + " Modello: " + this.getnome() + " Numero di porte: " + Integer.toString(this.getnumporte()) + "  Accelerazione (0-100 km/h): " + Double.toString(super.getvmax()) +"s" + "  Velocità massima: " + Double.toString(super.getacc()) +"km/h";
    }

这就是 Macchina 类中的函数。 问题是,当我插入一辆车时,它会像图像中那样保存,我希望每条信息都有一列。我该怎么办?

java csv
2个回答
0
投票

添加生成 CSV 文本的方法。

record Vehicle ( String make , String Model , double acceleration ) 
{
    String toCsv()
    {
        return this.make + "," + … + "\n" ;
    }

    Vehicle fromCsv ( String line ) { … }
}

CSV处理框架

CSV 并不像看起来那么简单。

首先,如果您的内容包含分隔符怎么办?那你需要逃跑。

其次,有一个需要尊重的规范。

因此,理想的解决方案是利用 CSV 处理库,而不是自行处理。幸运的是,Java 生态系统中有几个不错的库可供选择。


-1
投票

像这样修改你的 toString 函数:

public String toString(){
    return super.getproduttore() + ";" + this.getnome() + ";" + Integer.toString(this.getnumporte()) + ";" + Double.toString(super.getvmax()) +";" + Double.toString(super.getacc()) ;
}

并提供如下标题行:

String header = "Produttore;Modello;Numero di porte;Accelerazione(0-100 km/h);Velocità massima (km/h)";

在 for 循环之前将此行写入 .csv(将 .txt 更改为 .csv)文件

writer.write(header);
for (Macchina macchina : macch...
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.