【问题标题】:Can you either add or subtract based on a one-line if-statement inside a calculation?您可以根据计算中的单行 if 语句进行加法或减法吗?
【发布时间】:2020-05-16 09:23:35
【问题描述】:

(Java) 表达这个问题有点困难,但这就是我的意思:

我一直在研究一个简单的 Ceasar Cipher,它根据是加密还是解密,应该在与字符关联的值中添加或减去密钥。因此,这就是我想出的:

        // if direction == true, shift forwards (encrypt), else shift backwards (decrypt)
        if (direction == true) {
            newPos = (character - 'a' + key) % 26 + 'a';
        } else if (direction == false) {
            newPos = (character  - 'a' - key) % 26 + 'a';
        }

但我想知道是否可以缩短它,以便它会根据是否应该加密或解密在计算中放置一个“-”或“+”符号,例如:(我知道以下代码不起作用,但它说明了我的意思)

        // if direction == true, place a '+', else place a '-'
        newPos = (character - 'a ' ((direction == true) ? + : -) key) % 26 + 'a';

因此我想知道是否有任何方法可以在 Java 中做这样的事情?我不确定这是否对保持我的代码干净有很大的好处,但我认为它可能有助于消除代码中的一些重复。到目前为止,我一直无法在网上找到答案。

编辑:我不一定需要针对上述场景的解决方案(这就是我遇到这个话题的方式),但我的意思是这篇文章是一个更普遍的问题,关于这是否可能以及如何.

【问题讨论】:

  • 你可以先把if (direction == true) {...} else if (direction == false) {...}改成if (direction) {...} else {...}
  • == true 的布尔值是多余的。
  • 我知道,但这并不是问题的重点。此外,我认为它可能有助于提高可读性。

标签: java if-statement calculation


【解决方案1】:

您不能返回运算符,但可以返回正值或负值:

'a' + ((direction == true) ? key : -key)

也可以写成:

'a' + (direction ? key : -key)

或者您可以将方向更改为 int:+1 或 -1,然后使用乘法:

'a' + direction * key

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多