0

我的程序让用户输入一些 5 位数字,我需要一种方法来获取那个 5 位整数并将所有数字加在一起。例如,用户输入 26506,程序执行 2+6+5+0+6 并返回 19。我相信这将通过某种循环来完成,但不确定从哪里开始。

为了澄清,这个整数可以是任何东西,只要是 5 位数。

4

7 回答 7

6

从我的脑海中,您可以将其转换为字符串并遍历每个字符,使用 (charAt( position ) - '0' ) 累积值。我现在远离 java 编译器,但我想这应该可行。只要确保你只有数字数据。

于 2012-10-16T19:52:32.840 回答
5
int sum = 0;
while(input > 0){
    sum += input % 10;
    input = input / 10;
}
于 2012-10-16T19:52:44.807 回答
3

每次你取一个modulus数字10时,你都会得到数字ones。并且每次将divide您的数字加 10,您将获得除数字之外的所有ones数字。因此,您可以使用这种方法对所有数字求和,如下所示:-

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)

于 2012-10-16T19:54:36.690 回答
2

如果您的输入是字符串:

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);

并将其插入。

于 2012-10-16T19:58:10.980 回答
2

您需要除以取模:

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

所以每个除法的结果是那个base10位置的数字,为了得到下一个较低的有效数字,你取模。然后重复。

于 2012-10-16T19:53:21.227 回答
0

有两种方法:

使用以下方法解压数字:(假设数字仍然是 5 个字符)

int unpack(int number)
{
    int j = 0;
    int x = 0;
    for(j = 0; j < 5; j++){
        x += number % 10;
        number = number / 10;
    }
    return 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;
}
于 2012-10-16T20:02:31.203 回答
0
    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);

这将省略任何非数字字符。

于 2012-10-16T20:09:16.187 回答