指令是:输入一个整数(32位)并对其数字求和,可能会给出一个负整数或正整数。读取负整数时,将数字相加但忽略 - 符号。
这就是我所拥有的。不知何故,当整数为负时,我无法忽略负号。
import java.util.Scanner;
public class Exercise2_6M {
public static void main(String[] args) {
// Create a Scanner
Scanner input = new Scanner(System.in);
// Enter amount
System.out.print("Enter an integer:");
int integer = input.nextInt();
if (integer < 0)
integer = -integer;
// Calculations
int rinteger = Math. abs (integer);
int lastinteger = integer % 10;
int X = integer / 10;
int secondinteger= X % 10;
int firstinteger = X /10;
int finalinteger = firstinteger + secondinteger + lastinteger;
// Display results
System.out.println("Sum all digits in " + rinteger + " is " + finalinteger);
}
}
答案 0 :(得分:4)
当我运行它时,它会像它应该的那样忽略底片。我看到有两个问题。
这是我的测试结果:
第一个是好的,第二个是好的,第三个应该说“总和-4中的所有数字是4”,最后应该说“总和12345中的所有数字是15”。
C:\Documents and Settings\glowcoder\My Documents>java Exercise2_6M
Enter an integer:5
Sum all digits in 5 is 5
C:\Documents and Settings\glowcoder\My Documents>java Exercise2_6M
Enter an integer:100
Sum all digits in 100 is 1
C:\Documents and Settings\glowcoder\My Documents>java Exercise2_6M
Enter an integer:-4
Sum all digits in 4 is 4
C:\Documents and Settings\glowcoder\My Documents>java Exercise2_6M
Enter an integer:12345
Sum all digits in 12345 is 132
答案 1 :(得分:1)
忽略负号:
int integer = Math.abs(input.nextInt());
修改强> 我没注意到你的代码已经这样做了。为了使代码在最后显示负号,请删除以下行:
if (integer < 0)
integer = -integer;
因为你已经在做
了int rinteger = Math. abs (integer);
然后,用rinteger替换计算部分中除integer
之外的所有实例,就像这样
// Calculations
int rinteger = Math. abs (integer);
int lastinteger = rinteger % 10;
int X = rinteger / 10;
int secondinteger= X % 10;
int firstinteger = X /10;
int finalinteger = firstinteger + secondinteger + lastinteger;
最后,在显示结果时,使用整数而不是rinteger来恢复减号,或者只是在integer<0
时手动添加减号。
如果整数超过3位,你的代码也有缺陷,正如其他人指出的那样,但这是一个单独的问题。
要添加超过3位数,您需要一个循环。试试这个:
import java.util.Scanner;
public class Exercise2_6M
{
public static void main(String[] args)
{
// Create a Scanner
Scanner input = new Scanner(System.in);
// Enter amount
System.out.print("Enter an integer: ");
int integer = input.nextInt();
// Calculations
int rinteger = Math. abs (integer);
int sum = 0;
int i=0;
//loop through each digit (starting from the least significant) until the end of the number
while(rinteger / Math.pow(10,i) > 0)
{
sum+=getDigit(rinteger,i);
i++;
}
// Display results
System.out.println("Sum all digits in " + integer + " is " + sum);
}
public static int getDigit(int num, int power)
{
return (num % (int)Math.pow(10,power+1)) / (int)Math.pow(10,power);
}
}
答案 2 :(得分:-1)
我不记得具体,但整数可能是一个保留的java关键字,所以你可能想要改变那个变量名(即inputInt或其他东西)。你的代码背后的想法看起来很合理......但不是:
integer = -integer;
尝试:
inputInt = (-1)*inputInt;
这应该可以解决问题。