如何显示整数输入的个别数字?

时间:2014-11-23 19:33:50

标签: java

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

这是我到目前为止所做的:

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

4 个答案:

答案 0 :(得分:1)

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

示例

int input = 12345;

String inputStr = String.valueOf(input);

for(char c : inputStr.toCharArray()) {
    // Print out each letter.
}

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

这是解决方案

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等。

答案 3 :(得分:0)

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

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