【问题标题】:control structure, repetition exercise: How to get the sum of the digits of a number?控制结构,重复练习:如何获得数字的数字之和?
【发布时间】:2014-06-27 16:26:02
【问题描述】:

你们能帮我用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);

         }
  }
}

【问题讨论】:

  • 提示:使用模数 % 和整数除法 / 直到您的输入为零并添加模数余数。
  • 这是我的示例代码...我在这里使用字符串方法并将输入转换为字符串以获取单个数字并再次转换为 int 以获得总和...有没有办法对此进行编码只使用整数还是不使用字符串?
  • 您通过 console.nextInt() 获得 int 输入。无需将其转换为字符串。只需将它分成我的 10 并获得模式。这将去除单个数字,循环直到数字变为0,然后将其相加..

标签: java console-application


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2013-11-06
    • 1970-01-01
    • 2020-12-14
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多