如何显示整数输入的各个数字



我正在做一个作业,它提示用户输入一个整数,并显示该整数,数字用空格分隔,并提供这些数字的总和。我有这个工作,但我的个人数字显示是从最后一个数字到第一个数字。如何让它显示从头到尾的数字?

这是我到目前为止所拥有的:

import java.util.*;
public class SeparateAndSum{
   static Scanner console = new Scanner(System.in);
   public static void main(String[] args)
   {
      int num, temp, sum;
      System.out.print("Enter a positive interger: ");
      num = console.nextInt();
      System.out.println();
      temp = num;
      sum = 0;
      do
      {
         temp = num % 10;      
         sum = sum + num % 10; 
         num = num / 10;       
         System.out.print(" " + temp + " ");
      }while (num > 0);
      System.out.println("The sum of the digits = " + sum);
    }
}

一种选择是使用 String#valueOf(Integer) 方法。

int input = 12345;
String inputStr = String.valueOf(input);
for(char c : inputStr.toCharArray()) {
    // Print out each letter.
}

如果您使用方法 String.valueOf(12345)

您可以使用此库中的方法轻松反转字符串:

https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html#reverse(java.lang.String)

StringUtils.reverse(String.valueOf(input));

这是解决方案

import java.util.*;
public class SeparateAndSum{
   static Scanner console = new Scanner(System.in);
   int num, temp, sum;
   System.out.print("Enter a positive interger: ");
   num = console.nextInt();
   System.out.println();
   temp = num;
   sum = 0;
   ArrayList<Integer> values = new ArrayList<>();
   do
   {
      temp = num % 10;      
      sum = sum + num % 10; 
      num = num / 10;       
      values.add(temp);
   }while (num > 0);
   Collections.reverse(values);
   Iterator<Integer> it = values.iterator();
   while(it.hasNext()){
       System.out.println(" "+it.next()+" ");
   }
   System.out.println("The sum of the digits = " + sum);
 }
}

顺便说一句,您应该必须导入ArrayList等。

我强烈建议将数字放入字符串中,然后读取它,解析它,并根据需要使用该数字。如下

int input = 12345;
String inputString = input + "";
int sum = 0;
for (int i = 0; i < inputString.length(); i++) {
    sum += Integer.parseInt(inputString.charAt(i) + "");
}
System.out.println(sum);

然而,另一种方式,不那么漂亮。

int input = 12345;
int sum = 0;
while (input > 0) {
    int i = (input + "").length() - 1;
    int n = (int) (input / Math.pow(10, i));
    input -= (int) (n * Math.pow(10, i));
    sum += n;
}
System.out.println(sum);