Comment lire chaque chiffre d'un nombre en Java


J'essaie d'exécuter un programme qui génère la somme de chaque chiffre d'un entier entré. Comment pourrais-je lire le nombre et sortir chaque chiffre?

Exemple: l'Entrée est 4053 la sortie serait "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;
        }
    }
}

C'est le code que j'ai utilisé pour calculer la somme des chiffres individuels, maintenant j'ai juste besoin d'aide pour sortir les chiffres individuels. Tous les trucs et astuces seraient très appréciés.

Author: bgaki95, 2016-10-04

5 answers

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);
    }
}
 1
Author: esprittn, 2016-10-04 19:29:10

Je ne sais pas ce que vous entendez par sortie mais au lieu de cela, vous pouvez lire le nombre sous forme de chaîne et prendre chaque caractère et l'analyser en entiers

        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;
 0
Author: Amer Qarabsa, 2016-10-04 18:54:02

Vous pouvez lire ceci comme une chaîne, puis divisé par le nombre.

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 );
 0
Author: Frest0512, 2016-10-04 19:16:23

Sans scanner, vous pouvez faire

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);
 0
Author: Peter Lawrey, 2016-10-04 20:00:12

Essayez ceci:

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);
    }
}
 0
Author: esprittn, 2016-10-27 17:56:57