今天在BD上回答问题的时候看到的:
问题:编写一个方法,实现求某个整数的各个位上的数字之和
此时的我就想到了一种方法,真是可悲啊。。。惭愧!
首先附上我的方法:
解决方法一:
public?static?int?sum(int?num)?{
????????????????int?len?=?String.valueOf(num).length();?//得到数的长度
????????????????int?returnNum?=?0;?//最后返回值
????????????????for(int?i?=?0?;?i?<?len;?++i)?{//按照数的长度计算各个位上的值,并叠加?
????????????????????????int?operationNum?=?(int)?Math.pow(10,?i);?//获得计算数(为10的N次方),用于计算得到各个位置上的数
????????????????????????int?result?=?(num?%?(operationNum*10))/operationNum;?//得到当前位置上的数
????????????????????????returnNum?+=?result;?//将当前位置上的数叠加到返回值
????????????????}
????????????????return?returnNum;?//返回返回值(各个位置上的数的和)
????????}
自己感觉还不错,呵呵...
然后又看了下别人的做法,真让我自叹不如啊!学习了!
其方法,简单、有效!
开眼了...哈哈!
值得学习一下!
不多说,直接附上方法:
解决方法二:
public?static?int?qiuhe(int?num)?{
????????????????int?result?=?0;
????????????????String[]?eachNums?=?(num?+?"").split("");?//直接独立出各个位置上的数,不错!
????????????????for?(int?i?=?1;?i?<=?eachNums.length?-?1;?i++)?{
????????????????????????result?+=?Integer.parseInt(eachNums);
}
return?result;
}
解决方法三:
public?static?int?method(int?num){
????int?ret?=?0;
????while(num>0){
?????????ret?+=?num%10;?//获得个位上的数
?????????num?/=?10;?//去除当前个位,将十位上的数变成个位。感觉很不错,学习!
????}
????return?ret;
}?
本贴一共附上以上三个方法
大家觉得那个方法好,或者有什么意见可以说一下哦!
互相学习一下嘛!
当然如果大家有什么新的方法也可以加上哦,供他人学习!
你知-->我知-->他知!