我如何在Scanner的armtrongnumber计算中克服misMatchExeption?

时间:2018-04-17 22:22:25

标签: java inputmismatchexception

我已编写以下代码,但具有以下条件。我不被允许使用任何String或Math类,所以我用于循环,以打破数字。

适用于例如153和54883但是对于像4679307774这样的数字,扫描仪类型会给我一个misMatchExeption。我明白为什么,我尝试使用long类型,程序可以正常工作,但是(由于Two`s)没有给出正确答案。

我想知道,如何解决这个问题,或者更好地说出我可以尝试的其他事情。

Scanner sc = new Scanner(System.in);

    System.out.println("Please enter any Integer above zero here : ");
    System.out.println("Enter length of number, from 1 onwards: ");

    int num = sc.nextInt();
    int pow = sc.nextInt();

    int narziss = 0;  // TODO mismatchexeption
    int single;
    int a;

    do {
        a = 1;
        single = num % 10; // takes each chiffre from behind, for as long as for runs.
        System.out.println("single modulo : " + single);
        num = num / 10;

        for (int i = 0; i < pow; i++) {

            a *= single;
            System.out.println(a);
        }
        narziss += a;
        System.out.println("narziss: " + narziss);

    } while (num != 0);

    System.out.println(" if the last shown number, " +
            "is the same as you have typed in, " +
            "you found an so-called armstrong number! ");
    }
}

1 个答案:

答案 0 :(得分:1)

我问的问题可以用Integer以外的类型来解决。 例如......或浮点类型。

请务必更改或投射所有相关部件,如扫描仪,循环等。