发生次数(无阵列)

时间:2016-10-23 18:24:32

标签: java

我试图确定数字序列中四号出现的次数。用户可以确定下限和上限(包括)。到目前为止,我的代码仅计算如果范围设置为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);

2 个答案:

答案 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执行时并不意味着下面的代码将不会执行。只写其他部分或退出程序。