【发布时间】: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