程序填空,不要改变与输入输出有关的语句。
输入一个正整数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);
}
}
}
运行答案都一样 为什么啊??
但是答案却一样~怎么回事啊》?
追答当然一样,do..while比while的多执行一次一般是当首次条件不满足的时候,而你这里 n=Math.abs(n)了。
追问这样啊 ~ 那我提交作业时,,显示我的答案是错的~?。。。。。哎~~
那答案不是一样的么?哈~