java - 不理解模数的工作原理(Eclipse)

标签 java modulus

我刚刚开始学习 Java 入门教程,并且已经对什么(在我看来)奇怪的行为产生了疑问。有人可以澄清我如何错误地看待这个工具吗?

为什么不输出奇数:

        for (int i = 0, j = 0; i < 100; ++i){
            if ( i % 2 != 0){
                System.out.print(i + "\t");
            }
            ++i;  ++j;
            if (j >= 10){
                System.out.println();
                j = 0;
            }
        }

但这确实是偶数:

        for (int i = 0, j = 0; i < 100; ++i){
            if ( i % 2 == 0){
                System.out.print(i + "\t");
            }
            ++i;  ++j;
            if (j >= 10){
                System.out.println();
                j = 0;
            }
        }

即使这样也行不通:

        for (int i = 0, j = 0; i < 100; ++i){
            if ( i % 2 > 0){
                System.out.print(i + "\t");
            }
            ++i;  ++j;
            if (j >= 10){
                System.out.println();
                j = 0;
            }
        }

最佳答案

您正在递增i每个循环两次——一次在 for 中循环自身,并在主体中间一次。

最终结果是i当你到达 if ( i % 2 != 0){ 时,它本身才是偶数 (0, 2, 4, ...) .

删除体内增量i ;仅在 for 中增加循环本身。改变

++i;  ++j;

++j;

关于java - 不理解模数的工作原理(Eclipse),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20108456/

相关文章:

python - 如何使用矢量化对可被 5 整除的 numpy 数组中的每个元素求和?

javascript - 帮助查找包含模运算符的 if 语句中的模式

java - 适配器和 ListView

php - 从模数中获取特定行(php)

Java安全管理器

java - 无法设置 com.mysql.jdbc.Blob

C++ 最大公约数

java - 环绕网格 - 仅东/西错误

java - 框架总是在我的程序之上

java - 为什么 JTextField.setText ("String") 在 DocumentListener 中不起作用?