Java整数加法

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位数字,我需要一种方法来获取5位整数并将所有数字相加。例如,用户输入26506,程序执行2+6+5+0+6并返回19。我相信这将通过某种循环来完成,但我不确定从哪里开始


为了澄清,这个整数可以是任何东西,只要是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);