gpt4 book ai didi

java - csv 文件的 Integer.parseInt 在 Java 中不起作用

转载 作者:行者123 更新时间:2023-12-02 09:46:32 24 4
gpt4 key购买 nike

我试图将 csv 文件中的信息读入 eclipse,然后将每一列读入相应的变量,但我不断收到此错误。我发现错误可能发生在这行代码

int accountNUM = Integer.parseInt(values[0]);

我收到的错误如下

Exception in thread "main" java.lang.NumberFormatException: For input string: "1;PhilJohnston;phil.johnston@gmail.com;"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at Verbindung.main(Verbindung.java:55)

当我将“,”更改为“;”时我收到以下错误

线程“main”中出现异常 java.lang.ArrayIndexOutOfBoundsException:索引 0 超出长度 0 的范围 在 Verbindung.main(Verbindung.java:55)

我的 csv 文件采用这种格式

A            b               c
1 PhilJohnston phil.johnston@gmail.com

对应的Java代码

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

import java.text.ParseException;
import java.text.SimpleDateFormat;

public class Verbindung {

public static void main(String[] args) {

//Importing CSV File for table FUSER
String filename = "Fuser_excel.csv";
File file = new File(filename);

// Creating Arraylist
ArrayList < FBuser > fuser = new ArrayList < FBuser > ();
// ArrayList<Suppliers> lieferant = new ArrayList<Suppliers>();
//ArrayList<Delivery> lieferung = new ArrayList<Delivery>();

try {
Scanner inputStream = new Scanner(file);
while (inputStream.hasNext()) {
String data = inputStream.next();
String[] values = data.split(",");
int accountNUM = Integer.parseInt(values[0]);
String N_AME = values[1];
//String EMAIL = values[2];
//System.out.println(accountNUM);
//creating the object FBuser with the relevant parameters
//FBuser fbuser = new FBuser(accountNUM,N_AME,EMAIL);
//fuser.add(fbuser);
}
inputStream.close();
}
catch(FileNotFoundException d) {
d.printStackTrace();
}

try {
// establish connection to database
Class.forName("oracle.jdbc.driver.OracleDriver");
String database = "jdbc:oracle:thin:@oracle-lab.cs.univie.ac.at:1521:lab";
String user = "a01547605";
String pass = "dbs19";

// establish connection to database
Connection con = DriverManager.getConnection(database, user, pass);
Statement stmt = con.createStatement();

String sql = "INSERT into fuser (accountNUM, N_AME, EMAIL) values(?,?,?)";
PreparedStatement ps = con.prepareStatement(sql);

final int batchSize = 1000;
int count = 0;
for (FBuser a: fuser) {
ps.setInt(1, a.getaccountNUM());
ps.setString(2, a.getN_AME());
ps.setString(3, a.getEMAIL());
ps.addBatch();

if (++count % batchSize == 0) {
ps.executeBatch();
}
}
ps.close();
}
catch(Exception e) {
System.err.println(e.getMessage());
}
}
}

the corresponding Class
public class FBuser {
int accountNUM;
String N_AME;
String EMAIL;

public FBuser(int accountNUM,String N_AME, String EMAIL ) {
this.accountNUM = accountNUM;
this.N_AME = N_AME;
this.EMAIL = EMAIL;
}

public int getaccountNUM() {
return accountNUM;
}

public String getN_AME() {
return N_AME;
}

public String getEMAIL() {
return EMAIL;
}
}

我不明白我哪里出了问题。 csv 文件本身或读取方式可能有问题。

最佳答案

根据您发布的 CSV 文件内容,存在两个问题。首先,你的分隔符不是逗号,而是空格。其次,如果您更改为空格作为分隔符,则第一个值(值[0])将为“A”。 Java 无法将“A”转换为数字。

关于java - csv 文件的 Integer.parseInt 在 Java 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56610939/

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