gpt4 book ai didi

java - 将 CSV 文件读入不同类型的数组,然后读入 Arraylist

转载 作者:太空宇宙 更新时间:2023-11-04 09:57:12 25 4
gpt4 key购买 nike

我已将 CSV 文件导入到 java 中,然后将 CSV 文件的每一列读取到单独的数组中。然后我想将所有这些数组放入数组列表中。以下是我的代码。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
import java.sql.*;
import oracle.jdbc.driver.*;


public class verbindung {

public static void main(String[] args) {
String filename = "betreuen_4.csv";
File file = new File(filename);

ArrayList<caring> betreuen = new ArrayList<caring>();

try {
Scanner inputStream = new Scanner(file);
while(inputStream.hasNext()) {
String data = inputStream.next();
String[] values = data.split(",");
int PInummer = Integer.parseInt(values[1]);
String MNummer = values[0];
String KundenID = values[2];
System.out.println(MNummer);
}
inputStream.close();
}catch(FileNotFoundException e) {
e.printStackTrace();
}
betreuen[0] = MNummer;


}


}

我在最后一行代码处收到错误

betreuen[0] = MNummer;

错误状态:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: The type of the expression must be an array type but it resolved to ArrayList MNummer cannot be resolved to a variable

caring是由以下代码创建的类<​​/p>

public class caring {
String MNr;
int PINr;
String KID;

public caring(String MNummer,int PInummer, String KundenID ) {
this.MNr = MNummer;
this.PINr = PInummer;
this.KID = KundenID;
}
}

我已在谷歌中输入了此错误,我相信我可能会理解为什么会出现此错误。问题是我不知道如何得到我想要的结果,尽管我在网上做了很多研究。

简而言之,我希望我的 Arraylist 包含数组(MNummer、PInummer、KundenID)。我需要它成为我要编写的代码的数组列表,用于通过 Java 将批处理插入数据库。

最佳答案

您正在尝试访问ArrayList<caring> betreuen作为标准数组。

一个ArrayList<Type>是类的单个实例(对象),但是,该类存储数据数组。

要存储和检索数据,您必须使用类的适当方法添加、删除、设置等。

添加到 ArrayList<caring>事实上,您需要调用方法 add()与您要添加的参数,在本例中 betruen.add(MNummer);

但是,这不会起作用,因为 MNummer 是一个 String 对象,而不是一个 caring 对象,因此您必须首先创建一个 caring 类型的对象来添加到 betruen。

我们可以通过调用caring _caring = new caring(MNummer, PInummer, KundenID);来创建它

请注意,对象类通常应以大写字母开头,变量通常应以小写字母开头,这样您就可以编写像这样的代码 Caring caring = new Caring()而不是caring _caring = new caring()caring caring = new caring() ,后者不会运行,因为 JVM 会混淆变量名与类名相同的情况。

现在我们有了 caring对象我们现在可以将其添加到 ArrayList通过替换 betreuen[0] = MNummer;betreuen.add(caring);如果您尝试运行它,它很可能会给您带来另一个编译错误,因为您正在尝试访问其范围之外的变量。

以下面的代码为例,我们在if语句的左大括号“{”之前定义了obj1,因此if语句内的任何内容都可以访问obj1。

public void test()
{
String obj1 = "hello";
if(obj1.equals("hello"))
{
obj1 = "bye";
}
}

但是下面的代码不起作用,我们在 if 语句的左大括号“{”内定义了 obj2,因此 if 语句之外的任何内容都无法访问 obj1。

public void test()
{
String obj1 = "hello";
if(obj1.equals("hello"))
{
String obj2 = "bye";
}
obj2 = "hello";
}

要将上述内容组合在一起,您的代码应如下所示:顺便说一句:如果任何 CSV 字段中包含逗号,您的代码可能无法正确运行,建议使用预先存在的 CSV 库,但是,如果您仍然希望自己解析 CSV,您可能希望阅读 RFC 4178 Common Format and MIME Type for Comma-Separated Values (CSV) Files有关 CSV 文件格式的指南

 public class verbindung { 

public static void main(String[] args) {
String filename = "betreuen_4.csv";
File file = new File(filename);

ArrayList<caring> betreuen = new ArrayList<caring>();

try {
Scanner inputStream = new Scanner(file);
while(inputStream.hasNext()) {
String data = inputStream.next();
String[] values = data.split(",");
int PInummer = Integer.parseInt(values[1]);
String MNummer = values[0];
String KundenID = values[2];
System.out.println(MNummer);
//create the caring object with the required paramaters
caring _caring = new caring(MNummer, PInummer, KundenID);
//add _caring object to the betreuen array here as it is within the same scope.
betreuen.add(_caring);
}
inputStream.close();
}catch(FileNotFoundException e) {
e.printStackTrace();
}
//this will cause a compilation error
//betreuen[0] = MNummer;

//this will also cause a compilation error because it is out of the scope of _caring
//betreuen.add(_caring);
}
}

关于java - 将 CSV 文件读入不同类型的数组,然后读入 Arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53975625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com