如果是这样打印数字的中间数字?

时间:2015-09-22 17:00:28

标签: java

我尝试了一个程序,但它显示了第一个数字。我想通过while循环使用中位数程序。 我使用了以下内容 -

public class MID {

    public static void Indra(int n) {
        int a = 0, c = 0, m = 0, r = 0;
        a = n;
        while (n != 0) {
            c++;
            n = n / 10;
        }
        n = a;
        if (c % 2 == 0) {
            System.out.println("No mid digit exsist!!");
        } else {
            m = (c + 1) / 2;
            c = 0;
            while (n != 0) {
                c++;
                r = n % 10;
                if (c == r) {
                    System.out.println(r);
                }
                n = n / 10;

            }
        }
    }

}

但它继续提供相同的输出 -

The mid digit of 345 is 3

拜托,帮助我!

3 个答案:

答案 0 :(得分:3)

如果你不介意使用不同的逻辑,你可以尝试这个..

    int x = 354;
    String num = Integer.toString(x);
    if(num.length() % 2 != 0){
        System.out.println("The mid digit of " + x + " is " +  num.charAt(num.length()/2));
    }else {
        System.out.println("No middle number.");
    }

答案 1 :(得分:0)

您为位置中间数字计算m,但不使用它。

m = (c + 1) / 2;
for (int i = 0; i < m; i++)
    n /= 10;
System.out.println(n % 10);

答案 2 :(得分:0)

如果你想坚持使用这个

    if (c == 1 || c % 2 == 0) {
        System.out.println("No mid digit exsist!!");
    }
    else
    {
        m = c/2;
        int lower = (int)(n % Math.pow(10, m));
        int upper = n-((int)(n % Math.pow(10, m+1)));

        r = n-(upper+lower);
        while (r >= 10)
        {
            r = r/10;
        }

        System.out.println(r);
    }