首页 文章

控制结构,重复练习:如何得到数字的数字之和?

提问于
浏览
0

伙计们,请你帮助我使用for循环回答这个练习,而不使用字符串方法 .

编写一个程序,提示用户输入一个整数,然后输出数字的各个数字和数字的总和 . 例如,程序应输出3456的各个数字为3 4 5 6,总和为18,并输出-2345的各个数字为2 3 4 5,总和为14 .

这是代码:

package MyPackage;

import java.util.*;

public class Integer 
{
    public static void main(String args[])
    {   
       Scanner console = new Scanner (System.in);
       int input;
       int sum = 0;
       int num1 = 0;
       int counter = 1;
       String num = "";

       System.out.print("enter a number: ");
       input = console.nextInt();

       if (input == (-input))       
           {

               input = input * (-1);
               num = String.valueOf(input);
               num1 = num.length();
               System.out.print("the digits of " + input + " are: ");

               for (int i = 0; i < num1; i++ )
               {
                  String var = num.substring(i,counter);
                  int var1 = Character.getNumericValue(var.charAt(0));
                  System.out.print(var + " ");
                  sum = sum + var1;
                  counter++;
               }
               System.out.println();
               System.out.println("the sum is: " + sum);

         }

        else                    
            {   
               num = String.valueOf(input);
               num1 = num.length();
               System.out.print("the digits of " + input + " are: ");

               for (int i = 0; i < num1; i++ )
               {
                   String var = num.substring(i,counter);
                   int var1 = Character.getNumericValue(var.charAt(0));
                   System.out.print(var + " ");
                   sum = sum + var1;
                   counter++;
               }
               System.err.println();
               System.out.println("the sum is: " + sum);

         }
  }
}

1 回答

  • 1

    迭代所有数字 from right to left 很容易 - 你只需要除以10并保留余数 . 由于您需要从 left to right 打印它们,但似乎对内存使用没有任何限制,您可以将它们保留在列表中,然后向后打印:

    int num = ...; // inputed from user
    List<Integer> digits = new LinkedList<>();
    int sum = 0;
    
    // Extract the digits and the sum
    while (num != 0) {
        int digit = num % 10;
        digits.add (digit);
        sum += digit;
        num /= 10;
    }
    
    // Print backwards:
    System.out.print ("The digits are: ");
    for (int i = digits.size() - 1; i >= 0; --i) {
        System.out.print (digits.get(i) + " ");
    }
    System.out.println();
    System.out.println("Their sum is: " + sum);
    

相关问题