编写一个程序,提示用户输入一个整数,然后输出数字的各个数字和数字的总和。例如,程序应该:输出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);
}
}
答案 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);
答案 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);