【问题标题】:Basic Java While logic, how does it work?Basic Java While 逻辑,它是如何工作的?
【发布时间】:2020-06-28 13:02:32
【问题描述】:
public static int sumDigits(int number) {

    if(number < 10) {
        return -1;
    }

    int sum = 0;
    int remainder = 0;

    while(number > 0) {
        remainder = number % 10; 
        sum = sum + remainder; 
        number = number / 10;  

    }
    return remainder;
}

我是 Java 编程的初学者,目前正在学习 while 循环逻辑。我很难理解这段代码。对于上下文,此代码将任何给定整数中的数字相加,例如 125 将给出 8 的输出,因为 1+2+5=8。

我不明白 while 部分,说数字是 125,余数应该是 5,因为 125 % 10 是 5,现在总和应该是 5,因为 0 + 5,数字应该是 12,因为它是一个 int。 Sum如何给出1+2+5?

我们将不胜感激!谢谢。

【问题讨论】:

  • 只要数字大于零number &gt; 0,while 循环就会迭代。在循环的最后一行中,您看到 number 被重新签名,因此在下一次迭代中,number12 并且在下一个 1 中,这就是您得到 5 + 2 + 1 的结果的原因
  • 使用调试器逐步完成。或者添加一些println() 来打印每次迭代的值。
  • @Johnny Mopp 你说的是实话。甚至用纸和铅笔逐句执行代码也可以让您获得洞察力,但打印语句或调试器会更好,因为您会发现这些变量的真正变化方式。
  • @Lino 谢谢你!我明白了
  • 这能回答你的问题吗? How do I exit a while loop in Java?

标签: java while-loop


【解决方案1】:

cmets 提供了更直接的答案。但是随着您的进步,您可能需要注意一些关于 Java 的事情是您可以使用 += 运算符、/= 运算符,并且您可以查找和使用任何标准 Java 异常类或创建自己的异常类(通过从基类 Exception 继承),稍后您将学习。但这是优于 C 的一个优势,人们通常使用 -1&lt; 0(是否以常量命名)来表示错误。异常不那么模棱两可,如果未被捕获(例如默认情况下)会抛出堆栈跟踪以帮助诊断 - 例如找出故障发生的位置。最后,通常在编码中,您希望尽可能避免使用“幻数”,并将事物与识别任何给定数字含义的命名常量进行比较,以减少混淆和逆向工程代码所花费的时间,并加快代码长期维护运行。

public static int sumDigits(int number) throws IllegalArgumentException
{
    final static int MIN_VALUE = 10;

    if (number < MIN_VALUE)
        throw new IllegalArgumentException("Number must be >= " + MIN_VALUE);

    int sum = 0;
    int remainder = 0;

    while (number > 0) {
        remainder = number % 10; 
        sum += remainder; 
        number /= 10;  
    }
    return remainder;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-25
    • 2012-05-17
    • 2021-09-26
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多