为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ITMISS 2023-09-27 16:22:09
我的代码的目标:能够编写一个程序,在其中我可以输入任何数字 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 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

我假设您想迭代 的每个数字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);

}



查看完整回答
反对 回复 2023-09-27
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

您的代码存在逻辑错误,因此要检查迭代的数字是否为数字 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);

}


查看完整回答
反对 回复 2023-09-27
  • 2 回答
  • 0 关注
  • 168 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信