对于我的家庭作业,我需要编写代码来计算 2 n 次方 (2^n) 虽然我设法让它适用于从0到30的n,但对于31我得到-2147483648 对于任何大于 31 (33,35,40..) 的 n,我只得到 0.. 我该如何处理它? 我需要使用简单的命令,但我不能使用数学战俘
公共(public)类Task3a{
public static void main(String[] args) {
//---------------write your code BELOW this line only!--------------
Scanner myScanner = new Scanner (System.in);
int n = myScanner.nextInt();
int expo = n ;
int base = 2;
if (n==0){
System.out.println("1");
}
if (n==1){
System.out.println(base);
}
else{
while(expo>1){
base = base * 2 ;
expo = expo - 1;
}
System.out.println(base);
}
//---------------write your code ABOVE this line only!--------------
}
}
正如我所说,例如 2^35 我得到 0
最佳答案
您需要切换到使用原语long
。基元 int
的限制值为 2^(+/-)31,因此一旦达到该限制,它就会默认为零。
关于java - 当我尝试计算 2 的 n 次幂时,当 n 大于 30 时,我得到 0,我该如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58663173/