以整数求和数字

时间:2015-01-26 17:48:51

标签: java

* 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.我很困惑如何将这个逻辑转换为源代码与我对循环的一点知识。谢谢。

3 个答案:

答案 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);
  }
}