猿问

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

我的代码的目标:能够编写一个程序,在其中我可以输入任何数字 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”。我知道由于某种原因,该数字仅在循环中运行一次,因为它在跳出循环打印计数之前切断了最后一个数字......有什么建议吗?


ITMISS
浏览 179回答 2
2回答

慕斯709654

我假设您想迭代 的每个数字sevens。由于sevens从 初始化args[0],循环限制应该匹配并查看args[0].length()而不是args.length。for (int i = 0; i < args[0].length(); i++)编写循环的另一种方法是迭代直到sevens达到 0。这与循环体更好地对齐;两者都使用相同的变量。while (sevens > 0) {&nbsp; &nbsp; if (sevens%10 == 7) {&nbsp; &nbsp; &nbsp; &nbsp; count += 1;&nbsp; &nbsp; }&nbsp; &nbsp; sevens /= 10;&nbsp; &nbsp; System.out.println(sevens);}

尚方宝剑之说

您的代码存在逻辑错误,因此要检查迭代的数字是否为数字 7,您需要将数字转换为字符串,并使用以下命令检查该字符是否是所需的字符:numberString.charAt(index)下面是更正后的代码:public static void main(String[] args) {&nbsp; &nbsp; int sevens = Integer.parseInt(args[0]);&nbsp; &nbsp; String numberString = String.valueOf(sevens);&nbsp; &nbsp; int count = 0;&nbsp; &nbsp; for (int i = 0; i < numberString.length(); i++) {&nbsp; &nbsp; &nbsp; &nbsp; char c = numberString.charAt(i);&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; if (c == '7') {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; count += 1;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Input number: " + sevens);&nbsp; &nbsp; }&nbsp; &nbsp; System.out.println("Count of 7 numbers: " + count);}
随时随地看视频慕课网APP

相关分类

Java
我要回答