有没有人有想法在我写的这段代码中反向打印值?

时间:2017-05-10 20:43:09

标签: java

编写一个程序,提示用户输入一个整数,然后输出数字的各个数字和数字的总和。例如,程序应该:输出3456的各个数字为3 4 5 6,总和为18,输出8030的各个数字为8 0 3 0,总和为11,输出2345526的个别数字为2 3 4 5 5 2 6,总和为27,输出4000的个别数字为4 0 0 0,总和为4.

此外,即使用户输入负数,计算机也总是在正方向上添加数字。例如,将-2345的各个数字输出为2 3 4 5,将总和输出为14.

这是我遇到轻微困难的问题,我唯一能解决的部分是如何按照他想要的顺序打印单个整数,从我到目前为止所学到的只能反向打印它们。这是我的代码:

    import java.util.*;
public class assignment2Q1ForLoop {
   static Scanner console = new Scanner (System.in);
   public static void main(String[] args) {
      int usernum, remainder;
      int counter, sum=0, N; 
      //Asaking the user to enter a limit so we can use a counter controlled loop
      System.out.println("Please enter the number of digits of the integer");
      N = console.nextInt();
      System.out.println("Please enter your "+N+" digit number");
      usernum = console.nextInt();
      System.out.println("The individual numbers are:");
      for(counter=0; counter < N; counter++) {
         if(usernum<0)
         usernum=-usernum;
         remainder = usernum%10 ;
         System.out.print(remainder+" ");
         sum = sum+remainder ;
         usernum = usernum/10;
      }
      System.out.println();
      System.out.println("the sum of the individual digits is:"+sum);
   }
}

4 个答案:

答案 0 :(得分:0)

您必须将remainder个变量存储在一个数组中,然后在从最后一个索引到第一个索引的循环中打印它们,如this教程所示。

答案 1 :(得分:0)

你可以在数组中存储数字然后打印它们,或者你可以尝试这样的事情:

final Scanner console = new Scanner(System.in);

System.out.println("Please enter your number");
final int un = console.nextInt();

long n = un > 0 ? un : -un;
long d = 1;
while (n > d) d *= 10;

long s = 0;
System.out.println("The individual numbers are:");
while (d > 1) {
    d /= 10;
    final long t = n / d;
    s += t;
    System.out.print(t + " ");
    n %= d;
}
System.out.println();

System.out.println("the sum of the individual digits is:" + s);

答案 2 :(得分:0)

一个想法是:将int转换为string并编写方法

getChar(int index):String

它为您提供了来自3456的示例4

的getchar(2);

请参阅Java - Convert integer to string

答案 3 :(得分:0)

在这里,我使用堆栈为您的问题编写了一个代码。如果你想要一个简单的代码,你可以评论我的解决方案,我会写另一个。

    Scanner c1 = new Scanner(System.in);

    System.out.print("Enter the number: ");

    int numb = c1.nextInt();

    numb = Math.abs(numb);

    Stack<Integer> digits = new Stack<Integer>();

    while(numb>0){
        int n = numb%10;
        digits.push(n);

        numb = numb/10;
    }
    int sum = 0;
    while(!digits.isEmpty()){
        int n = digits.pop();
        sum+=n;
        System.out.print(n+" ");
    }
    System.out.print(sum);