* Write a programe that reads an integer between 0 and 1000 and adds all the
* digits in the integer. For example, if an integer is 932 the sum of all its
* digits is 14.
*/
package sumthedigitsinaninteger;
/**
*
*/
import java.util.Scanner;
public class SumTheDigitsInAnInteger {
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print(" Enter a number between 0 and 1000 : ");
int num = input.nextInt();
int extract = num % 10;
int remove_extract = extract / 10 ;
int answer = extract + remove_extract;
System.out.print(" The sum of the digit is " + answer);
}
}
我对这个问题很困惑。我正在阅读Y.Daniel Liang撰写的Java书籍简介第9版的一本书。本章是一个基本的编程,它只教我如何声明基本变量并进行基本算术。当我在网上寻求帮助的大部分帮助时,我得到了循环或while循环,我还没有读过它。任何人都知道如何在没有for循环或while循环的情况下解决这个问题,因为我还没有进入那一章。我知道%表示分裂的提示和/表示商。当我做了这个问题手册时,我得到了正确答案932这是14。我通过两次10分组得到它并添加了两个分区的提醒,这是一个3和2然后我添加一个动作9到3+ 2给了我一个14.我很困惑如何将这个逻辑转换为源代码与我对循环的一点知识。谢谢。
答案 0 :(得分:4)
如果您知道最大值为1000
,则可以在没有任何循环的情况下执行此操作。
这适用于:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print(" Enter a number between 0 and 1000 : ");
int num = input.nextInt();
int ones = num % 10;
int tens = (num / 10) % 10 ;
int houndreds = (num / 100) % 10;
int answer = ones + tens + houndreds;
System.out.print(" The sum of the digit is " + answer);
}
这是有效的,因为你知道数字是在 0和1000之间。但是一旦你学会了循环,你应该再次回到问题并尝试用循环解决它,因为这并不限制您输入整数的给定范围。
答案 1 :(得分:1)
你快到了。这个数字(最多)有三位数,对吧?
最右边的数字是number % 10
。左边的两位数字是twodigits = number / 10
,对吗?那么,右边的下一个数字是twodigits % 10
,对吗?什么是最左边的数字?它是twodigits / 10
!所以:
int rightmost = num % 10;
int twodigits = num / 10;
int middle = twodigits % 10;
int leftmost = twodigits / 10;
int result = leftmost + middle + rightmost;
就是这样!
你也可以通过循环执行此操作,正如评论所示,但是,因为你引用的问题将数量限制为1000,并且因为你似乎对循环知之甚少,这似乎更像是作者您正在阅读的这本书是为了解决这个问题。
答案 2 :(得分:0)
尝试递归方法(希望你能理解这一点,导致它比它更难)
int digitSum(int number) {
if (number<10) {
return number;
} else {
int extract = number % 10;
int remove_extract = number / 10 ;
return extract + digitSum(remove_extract);
}
}