我是一个新来的学生。我一直在尝试进行编码练习,我以为我的解决方案可以正常工作,但结果却出乎意料。我想知道我的逻辑是否有问题?
分配:编写一个名为sumFirstAndLastDigit的方法,该方法具有一个int类型的名为number的参数。
该方法需要找到参数的第一位和最后一位
使用循环传递给该方法的数字,并返回
该数字的第一位和最后一位。
如果数字为负,则该方法需要将-1返回
指示无效值。
输入/输出示例
sumFirstAndLastDigit(252); →应该返回4,第一个数字为2,最后一个数字为2,这使我们得到2 + 2,总和为4。
sumFirstAndLastDigit(257); →应该返回9,第一个数字为2,最后一个数字为7,这使我们得到2 + 7,总和为9。
sumFirstAndLastDigit(0); →应该返回0,因为我们只有1个数字,所以第一个数字和最后一个数字为0,这使我们得到0 + 0,并且
总和为0。
sumFirstAndLastDigit(5); →应该返回10,第一个数字和最后一个数字是5,因为我们只有1个数字,这使我们得到5 + 5,而
总和是10。
sumFirstAndLastDigit(-10); →应返回-1,因为参数为负数且需要为正数。
注意:方法sumFirstAndLastDigit需要定义为public
就像我们迄今为止在课程中所做的一样。
注意:请勿在解决方案代码中添加主要方法。
这是我想到的(我只包含了方法本身):
public static int sumFirstAndLastDigit (int number) {
if (number < 0) {
return -1;
} else if (number <= 9) {
number += number;
return number;
}
int num = number;
int sumFirstAndLast = 0;
while (num > 0) {
int useDigit = (num % 10);
if ((num == number) || ((double)num < 1)) {
sumFirstAndLast += useDigit;
}
num = num / 10;
} return sumFirstAndLast;
}
我认为问题可能是我的while循环中的if语句-但我不确定。我希望它检查num是否等于传递给该方法的原始数字,并检查num在while循环中运行了几次之后,检查它是否小于1(这就是为什么我将其强制转换为a双)
当我写出每个循环应该如何运行时,似乎可以正常工作,但是我一直得到错误的输出。
任何帮助,批评,经验法则等,我们将不胜感激。提前致谢。
最佳答案
你可以做这样的事情
public static int sumFirstAndLastDigit (int number) {
int first = number;
while (first >= 10) {
first /= 10;
}
int last = number % 10;
return (first + last) >= 0 ? (first + last) : -1;
}
它从输入中获取第一个和最后一个数字并将它们相加,然后在返回中检查它是否为负数,然后返回-1。