输入数字中某些数字的总和

时间:2019-03-23 11:14:07

标签: java

我一直在尝试从数字中求出某个数字,例如

Number: 5
Input:  54365
Output: The sum of 5's is 10

第二个示例:

Number: 5
Input:  5437555
Output: The sum of 5's is 20

我设法将数字分开,但我找不到求和的条件 一定的数字(例如示例中的数字5)。

很高兴听到您的想法

public static void main(String[] args) {
    int sum = 0;
    int number = MyConsole.readInt("Enter a number:");
    while (number > 0) {
        if (number % 10 == 8) {
            sum += 8;
        } else {
            number /= 10;
        }
    }
    System.out.println("The sum of 8's is:" + sum);
 }

我分隔数字的方式。
另外我还有一个小程序来获取输入,而不是使用扫描仪,因为我们在课堂上还没有经历过它。

1 个答案:

答案 0 :(得分:1)

您的要求对我来说似乎很清楚。 给定数字

final int number = 5;

还有一个起始号码

final int input = 54365;

最简单的方法是将该数字转换为String

final int inputStr = String.valueOf(input);

然后,您可以filter为此每个字符,sum他们

final int sum =
        inputStr.chars()                         // Get a Stream of ints, which represent the characters
                .map(Character::getNumericValue) // Convert a char to its numeric representation
                .filter(i -> i == number)        // Filter for the designated number
                .sum();                          // Sum all the filtered integers

输出:10


使用相同的方法,但是使用旧式的for循环

final int input = 54365;
final int inputStr = String.valueOf(input);
final int number = 5;
int sum = 0;

for (final char c : inputStr.toCharArray()) {
    final int n = Character.getNumericValue(c);

    if (n == number) {
        sum += number;
    }
}

您的解决方案可以工作

int number = 5;
int input = 543655;
int sum = 0;

while (input > 0) {
    if (input % 10 == number) {
        sum += number;
    }

    input /= 10;
}