如何使用Java将Integer拆分为数组?

时间:2014-10-11 21:46:01

标签: java arrays integer

如果之前已经提出过这个问题,我很抱歉,但经过广泛的搜索,我无法找到一个确凿的答案,所以我想我会问这里。我是Java的初学者(一般来说是编码),并且负责编写一个程序,该程序采用用户输入的3位数字,并添加这三个数字。

注意:我不能使用循环执行此任务,并且必须一次输入所有三位数字。

String myInput;
    myInput =        
    JOptionPane.showInputDialog(null,"Hello, and welcome to the ThreeDigit program. "
    + "\nPlease input a three digit number below. \nThreeDigit will add those three numbers and     display their sum.");
    int threedigitinput;
    threedigitinput = Integer.parseInt(myInput);

4 个答案:

答案 0 :(得分:2)

有很多方法,其中之一就是......

    String ss[] = "123".split("");
    int i = 
            Integer.parseInt(ss[0]) + 
            Integer.parseInt(ss[1]) + 
            Integer.parseInt(ss[2]);
    System.out.println(i);

另一个会......

    String s = "123";
    int i = 
            Character.getNumericValue(s.charAt(0)) +
            Character.getNumericValue(s.charAt(1)) +
            Character.getNumericValue(s.charAt(2));
    System.out.println(i);

还有另一个会......

    String s = "123";
    int i = 
            s.charAt(0) +
            s.charAt(1) +
            s.charAt(2) - 
            (3 * 48);
    System.out.println(i);

但是,除了这个简单的情况,3个数字的硬编码并不是很有用。那么递归呢?

public static int addDigis(String s) {
        if(s.length() == 1)
            return s.charAt(0) - 48;
        return s.charAt(0) - 48 + addDigis(s.substring(1, s.length()));
}
  

每个例子的输出:6

答案 1 :(得分:0)

你可以使用整数数学来单独提出三个数字

int first = threedigitinput / 100;
int second = (threedigitinput % 100) / 10;
int third = threedigitinput % 10;

答案 2 :(得分:0)

使用divmod的经典示例:

public class SumIntegerDigits {
    public static void main(String[] args) {
        System.out.println(sumOfDigitsSimple(248));    // 14
        System.out.println(sumOfDigitsIterative(248)); // 14
        System.out.println(sumOfDigitsRecursive(248)); // 14
    }

    // Simple, non-loop solution
    public static final int sumOfDigitsSimple(int x) {
        int y = x % 1000; // Make sure that the value has no more than 3 digits.
        return divmod(y,100)[0]+divmod(divmod(y,100)[1],10)[0]+divmod(y,10)[1];
    }

    // Iterative Solution
    public static final int sumOfDigitsIterative(int x) {
        int sum = 0;
        while (x > 0) {
            int[] y = divmod(x, 10);
            sum += y[1];
            x = y[0];
        }
        return sum;
    }

    // Tail-recursive Solution
    public static final int sumOfDigitsRecursive(int x) {
        if (x <= 0) {
            return 0;
        }
        int[] y = divmod(x, 10);
        return sumOfDigitsRecursive(y[0]) + y[1];
    }

    public static final int[] divmod(final int x, int m) {
        return new int[] { (x / m), (x % m) };
    }
}

答案 3 :(得分:0)

如果我理解了您的问题,您可以使用Character.digit(char,int)获取每个字符的值,例如 -

int value = Character.digit(myInput.charAt(0), 10)
        + Character.digit(myInput.charAt(1), 10)
        + Character.digit(myInput.charAt(2), 10);