【问题标题】:How to read each individual digit of a number in Java如何在Java中读取数字的每个单独的数字
【发布时间】:2017-02-13 01:15:36
【问题描述】:

我正在尝试运行一个程序,该程序输出输入整数的每个数字的总和。我将如何读取数字并输出每个数字?

示例:输入为 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;
        }
    }
}

这是我用于计算单个数字总和的代码,现在我只需要输出单个数字的帮助。任何提示和技巧将不胜感激。

【问题讨论】:

  • 输出是什么意思?
  • 扫描仪必须一次读取每个数字以创建数字,然后将其分解为每个数字。为什么不一次只读一个字符?
  • 在循环遍历数字时只需打印出lastDigit 的每个值。
  • @PeterLawrey。一方面,您需要验证您确实得到了一个整数,扫描仪可以很好地为您完成。
  • @PeterLawrey 另外,要加起来,您需要将数字单独转换为数字。一开始就一次完成似乎更有效率。

标签: java while-loop


【解决方案1】:

试试这个:

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);
    }
}

【讨论】:

    【解决方案2】:

    没有扫描仪也可以

    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);
    

    【讨论】:

      【解决方案3】:
      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);
          }
      }
      

      【讨论】:

      • 对于“1234”的输入,输出为“4 + 3 + 2 + 1 + = 10”,它会向后显示数字并包括不需要的+
      • @sinclair : 我编辑了我的帖子,所以最后一个 + 被删除了
      【解决方案4】:

      您可以像字符串一样阅读它,然后除以数字。

      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 );
      

      【讨论】:

        【解决方案5】:

        我不确定你的输出是什么意思,但你可以将数字读取为字符串并将每个字符解析为整数

                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;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-10-04
          • 1970-01-01
          • 2021-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-12
          相关资源
          最近更新 更多