Java整数加法
我的程序让用户输入一些5位数字,我需要一种方法来获取5位整数并将所有数字相加。例如,用户输入26506,程序执行2+6+5+0+6并返回19。我相信这将通过某种循环来完成,但我不确定从哪里开始Java整数加法,java,integer,addition,Java,Integer,Addition,我的程序让用户输入一些5位数字,我需要一种方法来获取5位整数并将所有数字相加。例如,用户输入26506,程序执行2+6+5+0+6并返回19。我相信这将通过某种循环来完成,但我不确定从哪里开始 为了澄清,这个整数可以是任何东西,只要是5位数字 从我的头顶,您可以将其转换为字符串,并在每个字符上迭代,用(charAt(position)-“0”累积值。我现在不使用java编译器,但我想这应该是可行的。只需确保您只有数字数据。您需要除以并取模数: int sum = 0; while(input &
为了澄清,这个整数可以是任何东西,只要是5位数字 从我的头顶,您可以将其转换为字符串,并在每个字符上迭代,用(charAt(position)-“0”累积值。我现在不使用java编译器,但我想这应该是可行的。只需确保您只有数字数据。您需要除以并取模数:
int sum = 0;
while(input > 0){
sum += input % 10;
input = input / 10;
}
26506 / 10000 = 2
26506 % 10000 = 6506
6506 / 1000 = 6
6506 % 1000 = 506
506 / 100 = 5
506 % 100 = 6
6 / 10 = 0
6 % 10 = 6
6 / 1 = 6
因此,每个除法的结果就是那个基数为10的位置的数字,为了得到下一个低有效数字,你需要取模。然后重复。每次你通过
10
取一个数的模
,你会在个
的地方得到数字。每次将你的数字除以10,你会得到除数字以外的所有数字。因此,您可以使用这种方法对所有数字求和,如下所示:-
22034 % 10 = 4
22034 / 10 = 2203
2203 % 10 = 3
2203 / 10 = 220
220 % 10 = 0
220 / 10 = 22
22 % 10 = 2
22 / 10 = 2
2 % 10 = 2
把它们全部加起来。。(4+3+0+2+2=11)如果您的输入是字符串:
public static void main(String[] args) {
// TODO code application logic here
System.out.println("Enter your number: ");
try{
BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
String input = bufferRead.readLine();
char[] tokens;
tokens = input.toCharArray();
int total=0;
for(char i : tokens){
total += Character.getNumericValue(i);
}
System.out.println("Total: " + total);
}catch(IOException e){
e.printStackTrace();
}
}
如果您的输入是整数,请简单使用
String stringValue = Integer.toString(integerValue);
并将其插入。有两种方法:
使用:(假设数字仍为5个字符)解包数字
int解包(int编号)
{
int j=0;
int x=0;
对于(j=0;j<5;j++){
x+=数字%10;
数字=数字/10;
}
返回x;
}
将其放入字符串中,选择单个字符并解析为
整数:
int sumWithString(String s)
{
int sum = 0;
for(int j = 0;j < 5;j++){
try{
sum += Integer.parseInt(""+s.charAt(j));
}catch(Exception e){ }
}
return sum;
}
int-sumWithString(字符串s)
{
整数和=0;
对于(int j=0;j<5;j++){
试一试{
sum+=Integer.parseInt(“+s.charAt(j));
}捕获(例外e){}
}
回报金额;
}
这将省略任何非数字字符。您需要模数(%)
运算符。Google it.模不取余数吗?这正是你需要它的原因。如果你用10对一个数字进行模,你会得到最后一个数字作为余数。有道理。@JonLin。。我认为你应该走另一条路。取一位数,然后取十位数,依此类推。这样,您只需在分母中使用10
。。从我得到的答案来看,似乎我是唯一一个想到这个解决方案的人……这错了吗?这是一个笨拙、不雅观的解决方案。我会考虑的。“谢谢你,”热舔,费心回答。但是,OTOH,相对于我的解决方案,%不是有点贵吗?仅仅是思考(但是,更快的速度几乎总是不雅观的)。将int转换为字符串需要反复应用%
来生成数字。另外,您还需要支付分配字符串对象的费用,这比%
操作的费用高100倍。我知道问题已经解决了,但我在想:既然用户以交互方式输入数据,它不是以前分配的字符串吗?这实际上会使我的解决方案至少和@Md.Taufique Hussain给出的(圆滑而优雅的)解决方案一样最优。很好地提供了算法,而不是code@SteveKuo是 啊这是我们能帮助初学者的最好方法。不提供直接代码。:)+1用于getNumericValue和字符串的直接处理
int sumWithString(String s)
{
int sum = 0;
for(int j = 0;j < 5;j++){
try{
sum += Integer.parseInt(""+s.charAt(j));
}catch(Exception e){ }
}
return sum;
}
Scanner scanner = new Scanner(System.in);
System.out.print("Enter number: ");
String s = scanner.nextLine();
char[] a = s.toCharArray();
int total = 0;
for(char x: a){
try {
total += Integer.parseInt(""+x);
} catch (NumberFormatException e){
// do nothing
}
}
System.out.println(total);