Как добавить длинное целое число в существующую программу - PullRequest
0 голосов
/ 06 октября 2011

Код работает.Но мне нужно включить длинные целые числа.Как я могу это сделать?Я пробовал миллион вещей.Я тоже не очень хорош в этом, поэтому мне нужно 5 раз больше, чтобы получить простой кодПожалуйста помоги.

import java.util.Scanner;
public class Exercise2_6M
{
    public static void main(String[] args)
    {
        // Create a Scanner
        Scanner input = new Scanner(System.in);
        // Enter amount
        System.out.print("Enter an integer:");
        int integer = input.nextInt();
        // Calculations
        int rinteger = Math. abs (integer);
        int sum = 0;
        int i=0;
        while(rinteger / Math.pow(10,i) > 0)
        {
            sum+=getDigit(rinteger,i);
            i++;
        }
        // Display results
        System.out.println("Sum all digits in " + integer + " is " + sum);
    }
    public static int getDigit(int num, int power)
    {
        return (num % (int)Math.pow(10,power+1)) / (int)Math.pow(10,power);
    }
}

Ответы [ 2 ]

2 голосов
/ 06 октября 2011

Считайте входное значение в виде строки и затем используйте класс BigInteger для выполнения расчетов с очень большими значениями.

0 голосов
/ 28 апреля 2012

Рекурсивное решение может быть намного меньше:

import java.util.Scanner;
public class Exercise2_6M
 {
    public static void main (String [] args)
    {
        Scanner input = new Scanner (System.in);
        System.out.print ("Enter an long:");
        long lng = input.nextLong ();
        int sum = getDigitSum (lng);
        System.out.println ("Sum all digits in " + lng + " is " + sum);
    }

    public static int getDigitSum (long num)
    {
        if (num < 10L) return (int) num;
        else return ((int)(num % 10)) + getDigitSum (num/10L);
    }
}
...