java - 为什么这个 for 循环只运行一次?

标签 java

我的代码的目标:能够编写一个程序,我可以在其中输入任何数字 int 作为命令行参数,并显示整数中有多少位是 7。

我的问题是我不明白为什么我的代码只运行一次 for 循环。我插入了 system.out.println(sevens);看看当我用 456789 这样的随机数编译时这个循环工作了多少次。

我只能想到一个 for 循环用于这个,并在开始时修复了一些简单的错误。我也检查了我的括号

public class TestingSevens {
    public static void main(String[] args) {
        int sevens = Integer.parseInt(args[0]);

        int count = 0;

        for (int i = 0; i < args.length; i++) {
            if (sevens%10 == 7) {
                count += 1;
            }
            sevens = sevens/10;
            System.out.println(sevens);
        }
        System.out.println(count);
    }
}

输入数字如 456789 的结果是第一次打印为“45678”,第二次打印为“0”。我知道这个数字出于某种原因只在循环中运行一次,因为它在跳出循环以打印计数之前切断了最后一个数字……有什么建议吗?

最佳答案

我假设您想遍历 sevens 的每个数字。由于 sevensargs[0] 初始化,循环限制应该匹配并查看 args[0].length() 而不是 args.length.

for (int i = 0; i < args[0].length(); i++)

另一种编写循环的方法是迭代直到 sevens 达到 0。这与循环体更好地对齐;两者都使用相同的变量。

while (sevens > 0) {
    if (sevens%10 == 7) {
        count += 1;
    }
    sevens /= 10;
    System.out.println(sevens);
}

关于java - 为什么这个 for 循环只运行一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58262930/

相关文章:

java - 在 Android 中以编程方式更改 LinearLayout 从顶部(默认从底部)的高度 (Java)

java - Thread.interrupted()清除线程中断状态的原因是什么?

java - 错误 :android-apt plugin is incompatible with the Android Gradle plugin. 请改用 'annotationProcessor' 配置

Java:将私有(private)成员字段设置为可访问的危险?

java - 为什么 HttpServletRequest.getRemoteAddr() 在 Java servlet 中不起作用?

java - 如何使用 switch case 表示两个变量?

java - 在 PHP 中复制 Java 的 getTime()

java - 从 android 中的 webview 获取响应

java - 正则表达式不适用于 java 中的多个字符串拆分?

java - Equals() 和 indexOf() 不能像我预期的那样使用 NumberFormat