我的程序要求用户输入一个 2 的幂 (1,2,4,8..128) 的数字。此外,我必须将 a[number]
替换为 true 或 false。目前,我正在使用 switch 语句来执行此操作。但是,我打算编写一个计算功率的函数。我们如何优化这段代码:
switch (requested) {
case 1:
if (b[1] == true)
b[1] = false;
break;
case 2:
if (b[2] == true)
b[2] = false;
break;
case 4:
if (b[3] == true)
b[3] = false;
break;
case 16:
if (b[4] == true)
b[4] = false;
break;
case 32:
if (b[5] == true)
b[5] = false;
break;
case 64:
if (b[6] == true)
b[6] = false;
break;
case 128:
if (b[7] == true)
b[7] = false;
break;
}
最佳答案
您可以使用Integer
中提供的函数:
int idx = Integer.numberOfTrailingZeros(requested);
b[idx] = false;
我还会考虑验证用户输入,以确保它实际上是 2 的幂:
int idx = Integer.numberOfTrailingZeros(requested);
if ((1<<idx) != requested) {
throw new InvalidInputException(...);
}
b[idx+1] = false;
关于java - 求一个数的幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41701325/