![](/img/trans.png)
[英]A Java program that gets an integer, separates the individual digits and gives the sum of the digits
[英]Java - Write a program that prompts the user to input an integer and then outputs both the individual digits of the number and the sum of the digits
我已经看到这个问题问了几次,但所有的回答都包含了我在这门课上还没有学到的功能,我确定一定有一种方法可以只用我学到的东西来做到这一点。 没有数组等......只是循环和先验。 我并不是真的在寻找答案,而只是寻找一些方向。 我已经包含了我已经完成的代码。 该程序需要能够处理负数、总和,然后以正确的顺序打印。 现在我的代码除了按正确的顺序打印外,什么都做。 我明白为什么它以相反的顺序打印(因为循环去掉然后打印 int 中的最后一个数字),但我似乎无法找到改变它的方法。 我曾尝试将其转换为字符串、字符,但无法获取。 请看一看,如果您不介意,请提供一些指导。 先感谢您。
public static void main(String[] args) {
int num;
int sum;
int temp;
System.out.print("Enter an integer, positive or negative: ");
num = keyboard.nextInt();
System.out.println();
if (num < 0)
num = -num;
sum = 0;
while (num > 0) {
temp = num;
sum = sum + num % 10; //Extracts the last digit and adds it to the sum
num = num / 10; //removes the last digit
System.out.print(temp % 10 + " ");
}
System.out.println(" and the sum is " + sum);
}
}
到目前为止,不知道他们在课堂上教给你的内容是什么,尽管效率很低,但很容易做到的是将数字重新创建为字符串。
String numbers = "";
while (num > 0) {
temp = num;
sum = sum + num % 10; //Extracts the last digit and adds it to the sum
num = num / 10; //removes the last digit
// System.out.print(temp % 10 + " ");
numbers = (temp % 10) + " " + numbers;
}
System.out.println(numbers + "and the sum is " + sum);
您已经用(temp%10)抓取了一位数字,然后用num = num / 10右移了原始数字。还有一些其他数据结构可以使用,例如Stack或LinkedList,它们在情况下会更自然地使用像您一样,或者您可以使用StringBuilder将数字附加到末尾,然后使用reverse()方法以正确的顺序将其取回,但是这些数据结构可能位于您提到的不知道的数组之后。
考虑到这些限制,我使用了字符串连接。 通常会发生以下情况:
String numbers = "";
num = 123;
digit = num % 10; // digit=3
num /= 10; // num=12
numbers = digit + " " + numbers; // numbers="3 " uses old value on right side of the equals
// next iteration
digit = num % 10; // digit=2
num /= 10; // num=1
numbers = digit + " " + numbers; // numbers="2 3 " see how the digit is put to the left of the old value
// last iteration
digit = num % 10; // digit=1
num /= 10; // num=0
numbers = digit + " " +numbers; // numbers="1 2 3 " notice there is an extra space at the end which is ok for your example
如果result> 0 counter ++,则设置一个计数器,循环num / 10。 最后,counter + 1将是位数
System.out.println("Please enter numbers: ");
int number_entered = input.nextInt();
int sum = 0;
String reserve = "";
if (number_entered < 0 ) {
number_entered = number_entered * -1;
}
for (number_entered = number_entered; number_entered > 0; number_entered/=10){
int lastdgt = number_entered%10;
sum += lastdgt;
reserve = lastdgt + " " + reserve + " ";
}
System.out.println(reserve);
System.out.println("The sum is = " + sum );
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.