Java:输入一个整数,输出它的位数以及各位数之和。

程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个整数,输出它的位数以及各位数之和。
例:括号内是说明
输入
4 (repeat=4)
123456 -100 -1 99
输出
number=6, sum=21 (123456的位数是6, 各位数之和是21)
number=3, sum=1 (-100的位数是3, 各位数之和是1)
number=1, sum=1 (-1的位数是1, 各位数之和是1)
number=2, sum=18 (99的位数是2, 各位数之和是18)
import java.util.Scanner;
public class Test40010 {
public static void main(String[] args){
int ri, repeat;
int number, sum,n;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
n=in.nextInt();
/*--------------------*/
System.out.println("number="+number+", sum="+sum);
}
}
}

我的答案是:
import java.util.Scanner;
public class Test40010 {
public static void main(String[] args){
int ri, repeat;
int number, sum,n;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
n=in.nextInt();
/*--------------------*/
number=0;
sum=0;
n=Math.abs(n);
while(n>0)
{
sum+=n%10;
n=n/10;
number++;

}
System.out.println("number="+number+", sum="+sum);
}
}
}

系统给的是错误的

而正确答案是:import java.util.Scanner;
public class Test40010 {
public static void main(String[] args){
int ri, repeat;
int number, sum,n;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
n=in.nextInt();
n=Math.abs(n);
sum=0;
number=0;
do{
sum+=n%10;
n/=10;
number++;
}while(n>0);
/*--------------------*/
System.out.println("number="+number+", sum="+sum);
}
}
}

运行答案都一样 为什么啊??

楼上说没错,while(X)是先进行X判断然后再执行{语句体},而do..while则是先执行do{语句体},再判断while(X),这样会导致do..while比while执行语句体的次数多一次追问

但是答案却一样~怎么回事啊》?

追答

当然一样,do..while比while的多执行一次一般是当首次条件不满足的时候,而你这里 n=Math.abs(n)了。

追问

这样啊 ~ 那我提交作业时,,显示我的答案是错的~?。。。。。哎~~

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-10
那是因为你没有考虑输入的整数 n=0这种情况。如果n=0,number=1, sum=0 (0的位数是1, 各位数之和是0)。
第2个回答  2011-05-10
这就是while 和do。。。。while的区别,while执行次数和判断次数是一样的
而do...while执行次数比判断次数多一次追问

那答案不是一样的么?哈~

第3个回答  2017-11-28
package eqe;
public class feafasfsa {
public static void main(String[] args) {

int a1=51515;
int sum=0;{

while(a1%10!=a1){
sum=sum+a1%10;
a1= a1/10;
}sum=sum+a1;

}
System.out.println(sum);

}

}
第4个回答  2011-05-11
用法区别而已
相似回答