gpt4 book ai didi

java - 数组问题,无法正确复制

转载 作者:行者123 更新时间:2023-11-30 03:19:19 26 4
gpt4 key购买 nike

这是我正在使用的代码,用于从 csv 中获取行,将它们存储到名为 userDetails 的字符串数组中,然后从该数据中获取 userDetails 从第四个值开始的所有值(userDetails [3]),并将它们放入称为分数的二维整数数组中。

private void loadFromCSVFile() 
{
String path = "res/users.csv";
BufferedReader br = null;
String row = "";
String DELIMETER = ",";
int[][] scores = new int[3][9];
try {

br = new BufferedReader(new FileReader(path));
while ((row = br.readLine()) != null)
{
String[] userDetails = row.split(DELIMETER);

int i = 3;
for (int x = 0 ; x <= 2 ; x++)
{
for (int y = 0 ; y <= 8 ; y++)
{
scores[x][y] = Integer.valueOf(userDetails[i] );
i++;
}
}

user = new User( userDetails[0] , userDetails[1] , userDetails[2], scores);
LoginChecker.Users.add(user);
}


} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

}

行:

user = new User( userDetails[0] , userDetails[1] , userDetails[2], scores);
LoginChecker.Users.add(user);

创建 User 类的新实例,并传入 3 个字符串(第一个 = 用户名,第二个 = 密码,第三个 = 用户类型(无论是教师、学生还是管理员)),以及 3 个字符串,它传递整数数组“分数”。

此代码是为了稍后在程序中我可以使用该代码:

for (int i = 0 ; i <= LoginChecker.Users.size() - 1 ; i++)
{
if (LoginChecker.Users.get(i).getUser().toLowerCase().equals(this.USERNAME))
{
System.out.println("Name: " + LoginChecker.Users.get(i).getUser().toLowerCase() + " Score: " + LoginChecker.Users.get(i).getScores()[0][0] );
}
}

其中 this.USERNAME 是登录用户的字符串,理论上,上面的代码应该获取相关用户的数组的第一个分数(即 [0][0]),并将其打印出来,但它只显示 csv 中最后一个人的分数。

例如,如果 csv 包含:

人员 1、密码、学生、1、2、3 等

人员2、密码、学生、10、9、8等

无论您以谁身份登录,始终会显示 10 作为第一个分数。

任何帮助将不胜感激,抱歉读了这么长时间,如果您需要有关该程序的更多信息,请询问,我会定期检查此内容,直到找到解决方案。

提前非常感谢您。

最佳答案

您对所有用户使用相同的scores[][]。您应该为每个用户创建一个新的 scores[][] 实例:

while ((row = br.readLine()) != null) 
{
String[] userDetails = row.split(DELIMETER);
int[][] scores = new int[3][9];************************************
int i = 3;
for (int x = 0 ; x <= 2 ; x++)
{
for (int y = 0 ; y <= 8 ; y++)
{
scores[x][y] = Integer.valueOf(userDetails[i] );
i++;
}
}

user = new User( userDetails[0] , userDetails[1] , userDetails[2], scores);
LoginChecker.Users.add(user);
}

关于java - 数组问题,无法正确复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31728181/

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