为什么此for循环仅运行一次?

时间:2019-10-07 02:46:47

标签: 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”。我知道这个数字由于某种原因只会循环运行一次,因为它会在跳出循环以打印计数之前切断最后一个数字...有什么建议吗?

2 个答案:

答案 0 :(得分:2)

我假设您要遍历sevens的每个数字。由于sevens是从args[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);
}

答案 1 :(得分:1)

您的代码存在逻辑错误,因此要检查重复的数字是否为数字7,您需要使用numberString.charAt(index)

将数字转换为字符串并检查该字符是否为所需的字符

下面是更正的代码:

public static void main(String[] args) {

    int sevens = Integer.parseInt(args[0]);
    String numberString = String.valueOf(sevens);
    int count = 0;

    for (int i = 0; i < numberString.length(); i++) {
        char c = numberString.charAt(i);        

        if (c == '7') {
            count += 1;
        }

        System.out.println("Input number: " + sevens);
    }
    System.out.println("Count of 7 numbers: " + count);
}