1
我被要求在不使用任何其他类型(例如BigInteger,String等)的情况下反转一个长整型值,以便在反转它时保留值。在计算结果时,我只允许使用'最大内存长'的长变量作为额外的临时变量。我认为在扭转长期价值的同时处理“溢出”案件存在困难。如何反转长整型值并处理java中的溢出情况?
我没有搜索网络的这个特定的问题,通过这个链接:Java reverse an int value without using array申请类似的解决方案整数,但我找到解决方案,他们正在使用其他数据类型来保存结果值。例如,要反转int,使用long来传递结果,但如果仅仅使用int来传递结果呢?我很惊讶没有人不使用其他类型就解决了这个问题。我也想知道是否有可能做到这一点?请提供您的输入。
功能如下:
public int reverseLong(long value){
int sign =1;
long result=0; //to hold result
if(value < 0){
value =-value;
sign = -1;
}
while(value !=0){
result = result*10+value%10;
value = value/10;
if(){ //could be a check on 'result' for overflow case
throw new NumberFormatException();
}
}
return sign*result;
}
所以基本上'123'变成了'321'? –
http://stackoverflow.com/a/4808804/4941367可能会有所帮助。 – Jeremy
是的,123变成321,-345变成-543,并且2,147,483,647因为有溢出而给出例外。 –