Java中的数字总和

时间:2014-02-04 02:01:27

标签: java

import java.util.Scanner;
public class CubesSum {

    public static void main (String [] args){

        int input;

        System.out.println("Enter a positive integer:");
        Scanner in = new Scanner(System.in);
        input = in.nextInt();

        int number = input; //number is a temp variable
        int sum = 0;

        while(number>0){
            int t= number%10;
            sum += t*t*t;
            number = number/10;
        }
        System.out.println("The sum of the cubes of the digits is:" +sum);
    }
}

好的,我正在使用while循环。对于要修改的部分B,以确定两个,三个和四个数字的整数等于其数字的立方体的总和。例如,371 =3³+7³+1³。谁能告诉我怎么做?我需要在while循环中包装一个for循环...

3 个答案:

答案 0 :(得分:1)

获取代码中计算数字数字的多维数据总和的部分,并将其作为函数:

int sumOfCubedDigits(int number) {
    int sum = 0;
    // compute sum from number
    return sum;
}

然后,遍历所有2到4位数字并检查它们是否等于其数字立方体的总和:

for (int n = 10; n < 10000; n++) {
    if (n == sumOfCubedDigits(n)) {
        // do whatever with n
    }
}

如果需要,你可以在for循环中保持立方数位数的计算,但它的可读性会低一些。


好的,所以看起来你还没有学过函数定义。我不应该假设。我们先用嵌套循环来做。

正如您所说,您需要在for周围包裹一个while循环。我们需要考虑所有2到4位数字,所以我们的循环将从第一个2位数开始,到达第一个5位数时结束:

for (int n = 10; n < 10000; n++) {
    // More code will go here.
}

在循环中,我们需要计算n的立方数位的总和。您之前编写的用于计算的代码会修改其操作的数字,但我们无法修改n,或者我们会搞砸for循环。我们制作副本:

for (int n = 10; n < 10000; n++) {
    int temp = n;
    int sum = 0;
    // Compute the sum of the digits of temp, much like you did before.
}

最后,如果总和等于n,我们会做一些事情来表明它。假设您的作业要打印所有这些数字:

for (int n = 10; n < 10000; n++) {
    int temp = n;
    int sum = 0;
    // Compute the sum of the digits of temp, much like you did before.
    if (sum == n) {
        System.out.println(n);
    }
}

答案 1 :(得分:0)

对于任意整数i,它是nth数字dn,(n = 1,最右边的数字)

dn = (i % (10^n)) / (10^(n-1)) // all integer operations

如您所见,您需要事先知道i的位数,否则,是的,您需要一个循环

答案 2 :(得分:0)

public static void main(String [] args){

    Scanner input = new Scanner(System.in);
    System.out.print("Please enter number : ");
    int num =  input.nextInt();

    int temp = num, remainder;
    int sum = 0;

    while(temp %10 != 0){
        remainder = temp %10;
        sum = sum+ remainder ;
        temp = temp/10; 
    }            

    System.out.println("Sum of digit : " + sum);

=====输出====
请输入数字:123
数字总和:6