我正在制作一个输血游戏。我有2个数组列表。一个有献血者的血型和姓名,第二个有接受者的血型和姓名。所有的名字我都会得到用户的输入并将它们存储在一个数组中(接受者数组列表更大)。
我不知道如何使用布尔2D数组将两个数组列表进行比较(应该返回true或false)。例如,在所有捐赠者和接受者输入姓名和血型后,程序应该告诉他们是否匹配。
我知道下面的代码是错误的,但我不知道怎么做。
boolean[][] array = new boolean[donorsList].
[recipientsList];
我写了一个解决方案(我不是生物学家,也不知道血型匹配是如何工作的),但它只是简单地检查血液的确切字母是否匹配。我相信你可以自己修改这个。我所做的另一件事不是使用布尔数组,而是使用一个单独的类,其中包含两个匹配项,施主和参与者。因为我在评论中解释的你当前的模式对我来说没有多大意义。如果接收者多于捐赠者,并且一个捐赠者可以与多个接收者进行多个匹配,那么使用布尔数组是没有意义的。。
主要的Java语言
public class Main {
public static void main(String[] args) {
Participant donors[] = new Participant[3];
Participant receivers[] = new Participant[6];
ParticipantMatch match[] = new ParticipantMatch[6];
//populate donors
donors[0] = new Participant("O", "Amy");
donors[1] = new Participant("A", "Alice");
donors[2] = new Participant("B", "Ash");
//populate receivers
receivers[0] = new Participant("AB", "Joe");
receivers[1] = new Participant("A", "John");
receivers[2] = new Participant("O", "Jim");
receivers[3] = new Participant("B-", "Jace");
receivers[4] = new Participant("AB-", "Jack");
receivers[5] = new Participant("A","James");
//check for match
int matchcounter = 0;
for (int i = 0; i < donors.length; ++i) {
for (int j = 0; j < receivers.length; ++j) {
if (donors[i].matches(receivers[j])) {
match[matchcounter++] = new ParticipantMatch(donors[i], receivers[j]);
}
}
}
for (int i = 0; i < match.length; ++i) {
if (match[i] != null) {
System.out.println(match[i].toString());
}
}
}
}
参与者Java语言
public class Participant {
private String bloodtype;
private String name;
public Participant(String bloodtype, String name) {
this.bloodtype = bloodtype;
this.name = name;
}
public String getbloodtype() {
return bloodtype;
}
public String getname() {
return name;
}
public boolean matches(Participant p) {
return this.bloodtype.equals(p.bloodtype);
}
}
参与者Match.java
public class ParticipantMatch {
private Participant donor;
private Participant receiver;
public ParticipantMatch(Participant donor, Participant receiver) {
this.donor = donor;
this.receiver = receiver;
}
public Participant getdonor() {
return donor;
}
public Participant receiver() {
return receiver;
}
public String toString() {
return "Donor: " + donor.getname() + "-Receiver: " + receiver.getname() + "-Bloodtype: " + donor.getbloodtype();
}
}
如果我们执行这个模型,我们会看到艾米与吉姆匹配,而爱丽丝与约翰和詹姆斯匹配
Donor: Amy-Receiver: Jim-Bloodtype: O
Donor: Alice-Receiver: John-Bloodtype: A
Donor: Alice-Receiver: James-Bloodtype: A
正如我已经提到的,我不知道血型匹配是如何工作的,所以您需要编辑匹配它们的算法。我只是检查了实际字符串是否匹配。
如何比较两个列表是否相等验证数据来自Excel工作表。我需要验证两个列表是否相同,并且列表中没有附加元素或缺少元素。我不需要对列表进行排序。打印输出CAGID Excel data=CAGID Web列表
在我的JavaScript小程序中,我必须检查a和b输入值:如果它们是新的一对,则这一对将作为1D向量添加到小程序的历史记录中。 因此,我制作了一个历史2D数组,其中存储了所有新的对。程序循环数组,将新对与历史数组的每一行进行比较。然而,我有一个问题:当比较的结果应该是真的(即,当I==1时),我得到了一个假结果。 我读了这一页:https://www.w3schools.com/js/js_ar
我很好奇如何比较这些数组,请记住这是一个示例,它不限于 4 个数组,因为这可能或多或少取决于用户选择) 最终目标是根据上述所有数组的比较/验证,获得一个具有真值或假值的新数组,仅当所有 4 个数组在该索引位置都有一个真值时,才应设置一个真值,如果它们是否为假值,例如: 希望我解释得正确。
本文向大家介绍将二维数组转为一维数组的2种方法,包括了将二维数组转为一维数组的2种方法的使用技巧和注意事项,需要的朋友参考一下 如何将下面的二维数组转为一维数组。 第一种方法: 第二种方法: 以上两种解法print_r($names);后的结果为: 注意:array_column();可以有第三个参数,如 $n = array_column($msg, 'name', 'id'); print_r
问题内容: 当我在大学时使用C ++时,我被告知要尽可能使用多维数组(因此称为MDA),因为它以较大的块分配,因此具有更好的内存局部性。另一方面,阵列数组(AoA)被分配为多个较小的块,可能分散在物理内存中发现空缺的所有位置。 所以我想第一个问题是:这是神话,还是值得遵循的建议? 假设是后者,那么下一个问题将是在没有真正MDA的Java之类的语言中做什么。当然,用1DA模拟MDA并不难。本质上,具
问题内容: 要求“比较应为或”。 但是,如果我遵循此规则,则会得到不同/错误的结果。为什么? 问题答案: 该建议仅适用于测试值的“真实性”的语句。是另一种野兽。 请注意,这始终是因为是数组而不是布尔值,并且执行简单的引用相等性测试(例如,仅;例如)。