bgaki95
bgaki95

Reputation: 1

How to read each individual digit of a number in Java

I am trying to run a program that outputs the sum of every digit of an entered in integer. How would I go about reading the number and outputting each digit?

Example: Input is 4053 the output would be "4+0+5+3 = 12".

import java.util.Scanner; 

public class Digits{
    public static void main(String args[]) {
    //Scans in integer   
        Scanner stdin = new Scanner(System.in);
        System.out.println("Enter in a number: ");
        int number = stdin.nextInt();

        //Set sum to zero for reference
        int sum = 0;
        int num = number; //Set num equal to number as reference

        //reads each digit of the scanned number and individually adds them                                  together
        //as it goes through the digits, keep dividing by 10 until its 0.
        while (num > 0) {
            int lastDigit = num % 10; 
            sum = sum + lastDigit;
            num = num/10;
        }
    }
}

That is the code I used for calculating the sum of the individual digits, now I just need help with outputting the individual digits. Any tips and tricks would be much appreciated.

Upvotes: 0

Views: 15746

Answers (5)

user6913557
user6913557

Reputation:

Try this:

import java.util.*;

public class Digits {

    public static void main(String [] args)
    {
        Scanner input = new Scanner (System.in);

        System.out.println("Enter number -> ");
        int number = input.nextInt();
        int sum = 0;

        String numStr = "" + number;

        while(number > 0)
        {
            int lastDigit = number % 10;
            sum += lastDigit;
            number = number / 10;
        }

        for(int i = 0; i < numStr.length();i++)
        {
            System.out.print(numStr.charAt(i));

            // Dont print an extra + operator at the end
            if( i == numStr.length() - 1) continue;

            else
                System.out.print(" + ");
        }

        System.out.print(" = " + sum);
    }
}

Upvotes: 0

Peter Lawrey
Peter Lawrey

Reputation: 533492

without a scanner you can do

StringBuilder sb = new StringBuilder();
String sep = "";
int ch;
long sum = 0;
while((ch = System.in.read()) > ' ') {
    if (ch < '0' || ch > '9') {
         System.out.println("Skipping " + (char) ch);
         continue;
    }
    sb.append(sep).append((char) ch);
    sep = " + ";
    sum += ch - '0';
}
sb.append(" = ").append(sum);
System.out.println(sb);

Upvotes: 1

JHDev
JHDev

Reputation: 995

import java.util.Scanner; 

public class Digits{
    public static void main(String args[]) {
    //Scans in integer   
        Scanner stdin = new Scanner(System.in);
        System.out.println("Enter in a number: ");
        int number = stdin.nextInt();

        //Set sum to zero for reference
        int sum = 0;
        int num = number; //Set num equal to number as reference

        //reads each digit of the scanned number and individually adds them                                  together
        //as it goes through the digits, keep dividing by 10 until its 0.
        String numToString = "";

        while (num > 0) {
            int lastDigit = num % 10; 
            numToString +=lastDigit+" + ";
            sum = sum + lastDigit;
            num = num/10;
        }
        //eliminate the last + sign 
        numToString = numToString.substring(0,numToString.lastIndexOf("+")).trim();
        System.out.println(numToString +" = " +sum);
    }
}

Upvotes: 1

Viacheslav Babanin
Viacheslav Babanin

Reputation: 568

You may read this like String and then divided by the number.

final Scanner s = new Scanner ( System.in );
  final String line = s.nextLine ().trim ();
  final char [] array = line.toCharArray ();

  int sum = 0;
  for ( final char c : array )
  {
     if ( !Character.isDigit ( c ) )
     {
        throw new IllegalArgumentException ();
     }

     sum = sum + Character.getNumericValue ( c );
  }

  System.out.println ( "sum = " + sum );

Upvotes: 0

Amer Qarabsa
Amer Qarabsa

Reputation: 6574

I am not sure what you mean by outputting but instead of this you can read the number as string and take each character and parse it to integers

        Scanner stdin = new Scanner(System.in);
    System.out.println("Enter in a number: ");
    String number = stdin.next();
     int[] result = new int[number.length];
     for(int i=0;i<number.length;i++) {
         result[i] = Integer.parseInt(number.charAt(i)+"");
      }
     return result;

Upvotes: 0

Related Questions