2016-10-04 174 views
0

整数で入力されたすべての桁の合計を出力するプログラムを実行しようとしています。番号を読んで各桁を出力するにはどうすればいいですか?Javaで数値の各桁を読み取る方法

例:入力は4053で、出力は「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; 
     } 
    } 
} 

、今私は、個々の数字を出力して助けが必要。どんなヒントやトリックも高く評価されます。

+0

を? –

+0

スキャナは各桁を1つずつ読み取って番号を作成し、次に各桁に分解しなければなりません。一度に1人のキャラクターを読むだけではいかがですか? –

+0

数字の上をループするときに 'lastDigit'の各値を出力するだけです。 – nhouser9

答えて

0

は私がで割った後、あなたはあなたが読んでも、このような文字列を文字列として番号を読み、それぞれの文字を取り、整数

 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

にそれを解析することができますが、これに代えて出力することによって何を意味するかわからないし、人数、個数、総数。

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); 
1
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); 
    } 
} 
+0

"1234"の入力の場合、出力は "4 + 3 + 2 + 1 + = 10"で、数字は後方に表示され、不要な '+'が含まれます。 – sinclair

+0

@ sinclair:最後の+が削除されるように投稿を編集します – esprittn

0

あなたは

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

を行うことができますスキャナなしでこのお試しください:あなたはoutputingによって何を意味しています

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); 
    } 
} 
関連する問題