繁体   English   中英

我无法让我的 java 程序打印结果

[英]I can't get my java program to print result

我被 mooc.fi 课程困住了; 其中我无法让我的程序打印结果。 该程序应该“打印给定范围内所有可被 3 整除的数字”。 数字按从小到大的顺序打印。

谢谢您的帮助。

public class DivisibleByThree {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = Integer.valueOf(scanner.nextLine());
        int b = Integer.valueOf(scanner.nextLine());

        divisibleByThreeInRange(a, b);
    }

    public static void divisibleByThreeInRange(int beginning, int end) {
        for (int i = 0; i >= beginning && i <= end; i++) {
            if (i % 3 == 0) {
                System.out.println(i);
            }    
        } 
    }
}

欢迎来到堆栈溢出,熵!

问题是这一行:

for (int i = 0; i >= beginning && i <= end; i++) { ... }

让我们分解一下for循环:

  1. for表示它是一个循环,第一个语句初始化循环,第二个语句给出执行下一次迭代的条件,第三个语句表示如何在迭代后更新。 引号内是在交互中执行的内容。
  2. 循环初始化: int i = 0定义循环变量i并将其设置为 0。
  3. 循环条件: i >= beginning && i <= end 因此,如果i在输入的范围内,我们将执行下一次迭代。
  4. 循环后更新: i++只是增加计数器。

如此有效,您从i为 0 开始,然后在该数字在输入范围内时执行循环。 但是,如果i超出您的范围,则永远不会执行循环,因为一开始条件为假。

您可以通过输入使范围包含 0 来确认这一点,即输入一个非正的下限和一个非负的上限范围(如 -10 到 10)。 然后,满足初始条件,您的循环愉快地显示了所有可被 3 整除的数字。

所以只需将循环更改为

for (int i = beginning; i <= end; i++) { ... }

它将按预期工作:从范围的开头开始,然后结束——完成!

这些 for 循环有时会很棘手,不是吗? :)

顺便说一句,这是一篇很棒的第一篇文章。 拥有最小可重现示例(MRE,也称为 reprex 或 MCVE [最小、完整、可验证示例])总是可以帮助其他人快速验证、调试和解决您的问题。

public class DivisibleByThree {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = Integer.valueOf(scanner.nextLine());
        int b = Integer.valueOf(scanner.nextLine());

        divisibleByThreeInRange(a, b);

    }
    public static void divisibleByThreeInRange(int beginning, int end) {
        for (int i = beginning ; i <= end; i++) {
            if (i % 3 == 0) {
                System.out.println(i);
            }    
        }



    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM