这个标题一定很混乱,所以让我解释一下我的问题。
我有一个一维数组(我们称其为“ ids”),按我需要的方式对其进行了排序。
然后,我有另一个2D数组,其中包含一个位置0的名称和一个位置1的ID(我们称其为“名称”)。
因此,名称[0] [0] =名称,名称[0] [1] = ID。
让我澄清一下,这两个数组的长度不一样!
我想做的是创建一个新的2D数组,该数组具有一个名称和一个ID,但排序方式类似于我的一维数组(这些ID的排列顺序与它们的存在顺序相同)。
到目前为止,我已经尝试过了(我得到的是一个充满空值的文本文件):
for (int i = 0; i < ids.length; i++){
String equal = ids[i];
for (int j = 0; i < users.length; i++) {
if(users[j][1].equals(equal)) {
sortedArray[i][0] = users[j][0];
sortedArray[i][1] = equal;
}
}
}
for (int i=0; i<sortedArray.length; i++){
writer.println(sortedArray[i][0]+"\t"+sortedArray[i][1]);
}
它可能没有任何用处,但是由于我是通过读取文件来创建这些的,因此这是我代码的其余部分:
BufferedReader reader;
BufferedReader reader2;
PrintWriter writer;
String[][] users = new String[39431][2];
String[] ids = new String[22890];
String[][] sortedArray = new String[22890][2];
reader = new BufferedReader(new FileReader("allConnectedUsers.txt"));
reader2 = new BufferedReader(new FileReader("ids.txt"));
String sorted = "sortedNamesWithIDs.txt";
writer = new PrintWriter(sorted, "UTF-8");
String usersline = reader.readLine();
String idsline = reader2.readLine();
for (int i = 0; i < users.length; i++) {
String splittedLine[] = usersline.split(" ");
String name = splittedLine[0];
String id = splittedLine[1];
users[i][0] = name;
users[i][1] = id;
usersline = reader.readLine();
}
for (int i = 0; i < ids.length; i++) {
String onlyIDs;
onlyIDs = idsline;
ids[i] = onlyIDs;
idsline = reader2.readLine();
}
答案 0 :(得分:0)
由于users[j][1].equals(equal)
在您的情况下永远都不为真,因此您将获得null。
答案 1 :(得分:0)
我实际上已修复它。这是一个非常愚蠢的错误。
在嵌套循环中,我并没有检查“ j”或增加它,而是i。
很抱歉您犯了这个愚蠢的错误。