首页 > 解决方案 > 第一位和最后一位数字之和

问题描述

我写了一个代码,我想在其中添加第一个和最后一个数字。我的代码涵盖 1 位和 2 位和 3 位的场景,但不包括 4 位。另外,我认为我的代码不是很简单和高效,我想使用一个while循环来覆盖所有场景。有人可以帮忙吗?

public static void main(String[] args) {
    System.out.println(sumFirstAndLastDigit(10));
}

public static int sumFirstAndLastDigit(int number) {
    int mod = 0;
    int firstdivide = 0;
    int seconddivide = 0;
    int sum = 0;

    if (number < 0) {
        return -1;
    } else if (number > 0 && number < 10) {
        return number + number;
    } else if (number >= 10 && number < 100) {
        mod = number % 10;
        firstdivide = number / 10;
        sum = mod + firstdivide;

        return sum;
    }

    while (number > 0) {
        mod = number % 10;
        firstdivide = number / 10;
        seconddivide = firstdivide / 10;
        sum = mod + seconddivide;

        break;
    }

    return sum;
}

标签: java

解决方案


通过一点数学,您可以轻松提取数字的第一位和最后一位。最后一位(最右边的)数字很简单,只需取模,第一个(最左边的)数字可以通过计算以 10 为底的对数来获得。

public static int sumFirstAndLastDigit (int number) {
    if (number < 0) {
        return -1;
    }

    int lastDigit = number % 10;
    int digits = (int)Math.log10(number); // number of digits - 1 
    int firstDigit = (int)(number / Math.pow(10, digits));

    return lastDigit + firstDigit;
}

推荐阅读