当前位置: 首页 > 知识库问答 >
问题:

反之亦然,值及其变量的编码

邹坚壁
2023-03-14

我有两个变量A和B,如果A=1,那么B应该B=2,如果A=2,那么B应该B=1,就像这样,有三对1-2,3-4,5-6,最好的方法是什么,而不是只有if-else

共有1个答案

陶博涉
2023-03-14

一个简单的解决方案是表查找。在A的每个可能值的数组中,我存储B的相应值:

private static final int[] B_PER_A = { -1, 2, 1, 4, 3, 6, 5 };

因为在Java中数组索引总是从0开始,所以我们需要在索引0处放一个虚拟值。该值从未使用过(或者至少不应该使用)。

我们来试试:

    for (int a = 1; a <= 6; a++) {
        int b = B_PER_A[a];
        System.out.format("a: %d; b: %d.%n", a, b);
    }
a: 1; b: 2.
a: 2; b: 1.
a: 3; b: 4.
a: 4; b: 3.
a: 5; b: 6.
a: 6; b: 5.
public static int calcB(int a) {
    // 0-based index of pair (0 = 1-2, 1 = 3-4, etc.)
    int pairNumber = (a - 1) / 2;
    // a + b for given pair
    int pairSum = 4 * pairNumber + 3;
    int b = pairSum - a;
    return b;
} 
    for (int a = 1; a <= 8; a++) {
        int b = calcB(a);
        System.out.format("a: %d; b: %d.%n", a, b);
    }
a: 1; b: 2.
a: 2; b: 1.
a: 3; b: 4.
a: 4; b: 3.
a: 5; b: 6.
a: 6; b: 5.
a: 7; b: 8.
a: 8; b: 7.

后一种解决方案更复杂,更难阅读。因此,如果您总是有三个对,不多也不少,我建议先给出更简单的表查找。

 类似资料:
  • 问题内容: 我在 问题答案: Greasemonkey脚本在单独的范围内运行,也可能在沙箱中运行,具体取决于设置。 另外,问题代码隔离在功能范围内(如gladoscc所说)。 最后,默认情况下, test.js 将在Greasemonkey脚本之前启动,因此无论如何它都不会看到任何设置变量。使用来解决这个问题。 因此,鉴于此 test.js ,请在运行之前: 然后,以下将起作用: 没有沙箱: 使用

  • 我有两个数组,在我尝试测试任何东西之前,我不知道数组的值。我的意思是数组的长度是动态的 我的问题是如何检查两个数组是否有至少一个公共值 假设我有两个类似情况1的数组: 当我们用类似campareArray(array1,array2)的函数比较这些数组时,应该返回true,相同的数组如下: 应该返回true 什么是有效的方法?我们可以检查数组长度并检查索引从大到小还有其他好方法吗?

  • 在我的SpringBoot应用程序中,我有两个实体和 我的DTO看起来非常相似,直到我意识到这可能会导致递归问题,当一个有一个字段,它有一个相同的字段,它有一个相同的字段,等等。 因此,我决定只把s交给我的DTO,所以它们看起来像这样 我的制图器很简单,以前是这样的 我将如何更改它们,以便他们将转换为/从和转换为/从?

  • 问题内容: 有没有简单的方法可以将(Java 8中引入的)转换为对象? “简单”是指比这更简单: 对我来说似乎有点尴尬。 由于我们仅对日期部分感兴趣,并且两个对象都没有时区信息,因此为什么要明确引入时区?转换应隐式采用午夜时间和系统默认时区。 问题答案: 其实有。有一个静态方法的valueOf在这不正是那个对象。所以我们有 就是这样。没有明确设置时区,因为本地时区是隐式获取的。 从文档: 提供的L

  • 问题内容: 我正在制作一个依靠块概念的css网格系统。所以我有一个基本文件,例如: 它由mixin使用: 但我也希望javascript能够访问基本文件中的变量。我当时想我可以创建一个不可见的div,并为其赋予$ block-width,$ block- height和$ block-margin属性,然后从中获取值。但是max- columns不能直接映射到任何东西,因此我不得不想出一种hack

  • 问题内容: 我需要转换一个随机生成的盐值并将其存储在数据库中。为了将其存储在数据库中,我将其转换为字符串。然后,为了检索原始值,我将其转换回字节。但是两个值都不匹配。我已经尝试过“ UTF-8”,“ UTF-16”,BASE64Encoder。 上面代码的输出(执行两次): 和 问题答案: 在上面编写代码时,先打印,然后实际打印的是数组对象方法的输出,这只是默认的Object 方法。所以我看不出您