Java 整数求和
说明是:输入一个整数(32位)并对其数字求和,您可能会得到一个负整数或正整数。读取负整数时,求和数字,但忽略-号 这就是我所拥有的。不知何故,当整数为负数时,我不能让它忽略负号Java 整数求和,java,sum,integer,Java,Sum,Integer,说明是:输入一个整数(32位)并对其数字求和,您可能会得到一个负整数或正整数。读取负整数时,求和数字,但忽略-号 这就是我所拥有的。不知何故,当整数为负数时,我不能让它忽略负号 import java.util.Scanner; public class Exercise2_6M { public static void main(String[] args) { // Create a Scanner Scanner input = new Scann
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);
}
}
import java.util.Scanner;
公共课练习2_6M{
公共静态void main(字符串[]args){
//创建扫描仪
扫描仪输入=新扫描仪(System.in);
//输入金额
System.out.print(“输入整数:”);
int integer=input.nextInt();
if(整数<0)
整数=-整数;
//计算
int rinteger=Math.abs(整数);
int lastinteger=整数%10;
int X=整数/10;
int secondinteger=X%10;
int firstinteger=X/10;
int finalinteger=firstinteger+secondinteger+lastinteger;
//显示结果
System.out.println(“将“+rinteger+”中的所有数字相加为“+finalinteger”);
}
}
我记不清具体的名称,但integer可能是一个保留的java关键字,因此您可能需要更改该变量名(即Input或其他名称)。你的代码背后的想法看起来很合理。。。但不是:
integer = -integer;
尝试:
这应该可以解决问题。我记不清具体的情况,但integer可能是一个保留的java关键字,因此您可能需要更改该变量名(即inputInt或其他)。你的代码背后的想法看起来很合理。。。但不是:
integer = -integer;
尝试:
这就可以了。要忽略负号:
int integer = Math.abs(input.nextInt());
编辑:
我没有注意到你的代码已经做到了这一点。要使代码在末尾显示负号,请删除以下行:
if (integer < 0)
integer = -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;
最后,在显示结果时,使用integer而不是rinteger来恢复减号,或者如果
integer忽略负号,则手动输入减号:
int integer = Math.abs(input.nextInt());
编辑:
我没有注意到你的代码已经做到了这一点。要使代码在末尾显示负号,请删除以下行:
if (integer < 0)
integer = -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;
最后,在显示结果时,使用integer而不是rinteger来恢复减号,或者在运行时手动输入减号(如果integer),它会像预期的那样忽略负号。我看到有两个问题
当您打印负数时,它会打印正数。考虑将原始值存储在打印中。
它不适用于大数字,因为您需要硬编码3位数字。考虑把这个放在一个循环中以获得所有的数字。
以下是我的测试输出:
第一个是好的,第二个是好的,第三个应该说“将-4中的所有数字相加等于4”,最后一个应该说“将12345中的所有数字相加等于15”
当我运行它时,它会像预期的那样忽略负片。我看到有两个问题
当您打印负数时,它会打印正数。考虑将原始值存储在打印中。
它不适用于大数字,因为您需要硬编码3位数字。考虑把这个放在一个循环中以获得所有的数字。
以下是我的测试输出:
第一个是好的,第二个是好的,第三个应该说“将-4中的所有数字相加等于4”,最后一个应该说“将12345中的所有数字相加等于15”
有错误吗?您有输出吗?这将在三位数上工作,但在其他情况下不起作用。@mimisbrunr说的是,您在其中缺少一个循环。这对我来说很好(只要您的INT有三位数或更少)复制并粘贴以下内容:import java.util.*;类S{publicstaticvoidmain(String[]a){Scanner i=new Scanner(System.in);而(true){int n=i.nextInt(),S=0;for(n=Math.abs(n);n!=0;S+=n%10,n/=10);System.out.println(S);}
(192字节)到名为S.java的文件,编译并运行它。它应该做你需要的一切,并能正确地处理任意大小的整数。有错误吗?您有输出吗?这将在三位数上工作,但在其他情况下不起作用。@mimisbrunr说的是,您在其中缺少一个循环。这对我来说很好(只要您的INT有三位数或更少)复制并粘贴以下内容:import java.util.*;类S{publicstaticvoidmain(String[]a){Scanner i=new Scanner(System.in);而(true){int n=i.nextInt(),S=0;for(n=Math.abs(n);n!=0;S+=n%10,n/=10);System.out.println(S);}
(192字节)到名为S.java的文件,编译并运行它。它应该做你需要的一切,并能正确地处理任意大小的整数。它不是一个保留字。而-integer
的工作原理就像它被假定的那样:)integer不是一个好名字,但它很好用。整数会是个问题。@Costis我不认为会。(请注意,我用integer
替换了integer
,它运行得很好。因此,我知道这不会有问题。)至少对编译器来说是这样。对于必须阅读此代码的人来说,是的,这可能是一个问题!我记得在2006年,我遇到了一些问题,我相信命名某个整数。。。哦,好吧。但是@glowcoder您是对的,使用与本机命名不明确的命名可能会影响可读性。它不是保留字。而-integer
的工作原理就像它被假定的那样:)integer不是一个好名字,但它很好用。整数会是个问题。@Costis我不认为会。(请注意,我用integer
替换了integer
,它运行得很好。因此,我知道这不会有问题。)至少对编译器来说是这样。对于必须阅读此代码的人来说,是的,这可能是一个问题!我记得在2006年,我遇到了一些问题,我相信命名某个整数。。。哦,好吧。但是@glowcoder你是对的