无聊,看了道题:就是题目所说的,两个数(int类型)第一个数小于第二个数(1-999范围内),循环个位十位百位相加
例:15,19
1+5+1+6+1+7+1+8+1+9=40
思路:本来呢,看到这题,第一想法就是求余数,这样做1-99的能出来,100+的不好做。于是我想到了string的substring
-
public String substring(int beginIndex, int endIndex)
-
Examples:
"hamburger".substring(4, 8) returns "urge" "smiles".substring(1, 5) returns "mile"
嗯,这样做就行了
-
1.将num2-num1+1得到循环次数
i = num2 - num1 + 1; for (j = 0; j < i; j++) { }
-
2.num1的值先转为string,通过string的substring取出个位十位百位()并且最后再转化为int
String num3 = String.valueOf(num1);
if(num1/10==0) { res=Integer.parseInt(num3.substring(0, 1))+res; }else if (num1/100==0) { res=Integer.parseInt(num3.substring(0, 1))+Integer.parseInt(num3.substring(1, 2))+res; }else if (num1/1000==0) { res=Integer.parseInt(num3.substring(0, 1))+Integer.parseInt(num3.substring(1, 2))+Integer.parseInt(num3.substring(2, 3))+res; }
全部代码如下:
-
public static void main(String[] args) { int num1 = 15, num2 = 19, i, j,res = 0;//num1,num2代表你想输入的两个数,res和 i = num2 - num1 + 1;//循环次数 for (j = 0; j < i; j++) { String num3 = String.valueOf(num1);//将num1转化为string并且赋值到num3 if(num1/10==0)//如果num1/10=0即num小于10则 { res=Integer.parseInt(num3.substring(0, 1))+res; }else if (num1/100==0)//如果num1/100=0即num小于100大于等于10则 { res=Integer.parseInt(num3.substring(0, 1))+Integer.parseInt(num3.substring(1, 2))+res; }else if (num1/1000==0) //如果num1/1000=0即num小于1000大于等于100则 { res=Integer.parseInt(num3.substring(0, 1))+Integer.parseInt(num3.substring(1, 2))+Integer.parseInt(num3.substring(2, 3))+res; } num1++;//num1+得到下一个值 } System.out.println(res);//输出结果 }