gpt4 book ai didi

java - 比较两个数组。处理这种情况的明智方法是什么?

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

我想用 2 个包含 2 个值的数组进行计算,并且我有 5 个公式用于 5 种不同的条件。

例如数组:

Array 1: [15, 17]
Array 2: [15, 16]

那么有5个条件:

AB AC - condition 1
AB AB - condition 2
AB AA - condition 3
AA AC - condition 4
AA AA - condition 5

它们总是至少有 1 个相同的值。如果它们只有 1 个相同的值,例如上面的示例,[15,17] 和 [15,16],其中 15(或 A)同时存在,但 17(可以是 B 或 C)和 16(可以是 B 或C) 不同,这是第一个条件。如果它们相同,并且每个数组有 2 个不同的值,例如 [15,16] 和 [15,16],则这将是第二个条件。

什么是明智的方法来做到这一点?我正在考虑使用 if...

if (condition 1){
formula 1
}else if(condition 2){
formula 2
}else if(condition 3){
formula 3
}else if(condition 4){
formula 4
}else if(condition 5){
formula 5
}

但这看起来真的很可怕,我没有信心用它正确地写出条件。

最佳答案

首先,正如我在评论中所说,为所有情况编写良好的单元测试。这些应该可以确保您最终编码的任何解决方案的正确性。我和许多人更喜欢在实际代码之前编写单元测试(如果这听起来很奇怪并且您想了解更多信息,请搜索 TDD)。

其次,我的风格将使用嵌套的 if/else 语句(伪代码):

    if (arr1[0] != arr2[0]) {
throw some exception;
}

if (arr1[0] == arr1[1]) { // we now know arr1[0] == arr2[0] == arr1[1]
if (arr2[0] == arr2[1]) { // all equal
assert arr1[1] == arr2[1];
// condition 5
} else {
// condition 4
}
} else { // arr1[0] != arr1[1]
if (arr2[0] == arr2[1]) { // arr1[0] == arr2[0] == arr2[1]
// condition 3
} else {
if (arr1[1] == arr2[1]) {
// condition 2
} else {
// condition 1
}
}
}

关于java - 比较两个数组。处理这种情况的明智方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53666847/

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