【问题标题】:Is there a logic flow problem in my solution?我的解决方案中是否存在逻辑流程问题?
【发布时间】:2020-05-17 15:38:37
【问题描述】:

我是一个非常新的学生。我有一个我一直在尝试完成的编码练习,我认为我的解决方案是有效的,但我得到了意想不到的结果。我想知道我的逻辑是否有问题?

分配:编写一个名为 sumFirstAndLastDigit 的方法,其中一个 int 类型的参数称为 number。

方法需要找到参数的第一个和最后一个数字 传递给方法的数字,使用循环并返回总和 该号码的第一位和最后一位数字。

如果数字为负数,则该方法需要返回 -1 到 表示无效值。 示例输入/输出

  • sumFirstAndLastDigit(252); → 应该返回 4,第一个数字是 2,最后一个数字是 2,这给了我们 2+2,总和是 4。

  • sumFirstAndLastDigit(257); → 应该返回 9,第一个数字是 2,最后一个数字是 7,这给了我们 2+7,总和是 9。

  • sumFirstAndLastDigit(0); → 应该返回 0,第一个数字和最后一个数字是 0,因为我们只有 1 个数字,这给了我们 0+0 和 总和为 0。

  • sumFirstAndLastDigit(5); → 应该返回 10,第一个数字和最后一个数字是 5,因为我们只有 1 个数字,这给了我们 5+5 和 总和是 10。

  • sumFirstAndLastDigit(-10); → 应该返回 -1,因为参数是负数并且需要是正数。

注意:方法 sumFirstAndLastDigit 需要定义为 public 就像我们迄今为止在课程中所做的那样静态。

注意:不要在解决方案代码中添加 main 方法。

这是我想出的(我只包括了方法本身):

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(这就是为什么我将它转换为双)

当我写出每个循环应该如何运行时,它似乎可以工作,但我得到的输出不正确。

非常感谢任何帮助、批评、经验法则等。提前致谢。

【问题讨论】:

    标签: java methods while-loop logic


    【解决方案1】:

    你可以这样做

    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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多