我试图确定数字序列中四号出现的次数。用户可以确定下限和上限(包括)。到目前为止,我的代码仅计算如果范围设置为40-49,则数字4出现的次数 - 结果输出为10,但实际值应为11,因为44有两个4' s。另外,1-10范围的输出应该是1,但我得到零值?我没有正确检查4的发生吗?我考虑了不同的地方(一个地方,十分之一,百分之一的地方)。
Scanner scan = new Scanner(System.in);
int count = 0;
int i;
System.out.println("Enter the lower range: ");
int lower = scan.nextInt();
System.out.println("Enter the upper range: ");
int upper = scan.nextInt();
if (lower > upper) {
System.out.println("Bad input");
}
for (i = lower; i <= upper; i++) {
if (lower * 0.01 == 4) {
count++;
} else if (lower * .1 == 4) {
count++;
} else if (lower * 1 == 4) {
count++;
}
}
System.out.println("Result: " + count);
答案 0 :(得分:1)
Don't use floating point math。结果是subject to accuracy errors。坚持整数运算。
提示:使用模数%
和除法/
来提取特定数字。
答案 1 :(得分:1)
Java Code下面将解决您的问题:
try (Scanner scan = new Scanner(System.in)) {
int count = 0;
int i;
System.out.println("Enter the lower range: ");
int lower = scan.nextInt();
System.out.println("Enter the upper range: ");
int upper = scan.nextInt();
if (lower > upper) {
System.out.println("Bad input");
} else {
int num=0;
for (i = lower; i <= upper; i++) {
num=i;
while(num>0){
if(num%10==4){
count++;
}
num=num/10;
}
}
System.out.println("Result: " + count);
}
}
注意:当IF执行时并不意味着下面的代码将不会执行。只写其他部分或退出程序。