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