伙计们,请你帮助我使用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 回答
迭代所有数字 from right to left 很容易 - 你只需要除以10并保留余数 . 由于您需要从 left to right 打印它们,但似乎对内存使用没有任何限制,您可以将它们保留在列表中,然后向后打印: