如何将String拆分为整数?

时间:2014-10-17 21:51:20

标签: java arrays string split integer

我想拆分一个String,并将String的每个数字存储成一个整数。

这是我的测试代码:

public class test {
    public static void main(String[] args){
        int firstGuessDigit, secondGuessDigit, thirdGuessDigit, fourthGuessDigit;
        String guess = "1234";
        String[] parts = guess.split("\");
        firstGuessDigit = Integer.parseInt(parts[0]);
        secondGuessDigit = Integer.parseInt(parts[1]);
        thirdGuessDigit = Integer.parseInt(parts[2]);
        fourthGuessDigit = Integer.parseInt(parts[3]);
    }

}

当我运行程序时,我收到一个错误:“线程中的异常”main“java.lang.ArrayIndexOutOfBoundsException:1         在test.main(test.java:11)​​

5 个答案:

答案 0 :(得分:2)

你得到的错误是因为你没有它时试图做部分[1]。

您正在寻找的代码是:

String guess = "1234";
int[] guessInteger = new int[guess.length()];
int i=0;
for(Character ch : guess.toCharArray()){
    if(Character.isDigit(ch)){
        guessInteger[i++] = Character.getNumericValue(ch);
    }
}

答案 1 :(得分:2)

您可以使用chars()信息流获取字符串的字符,并使用Character.getNumericValue将其映射到数字值:

"1234".chars().map(Character::getNumericValue).toArray()

如果您希望将它们作为列表而不是数组,则可以使用:

"1234".chars().map(Character::getNumericValue).boxed().collect(Collectors.toList())

答案 2 :(得分:1)

您可以改为使用String#toCharArray

char[] parts = guess.toCharArray();
firstGuessDigit = Integer.parseInt(Character.toString(parts[0]));
secondGuessDigit = Integer.parseInt(Character.toString(parts[1]));
thirdGuessDigit = Integer.parseInt(Character.toString(parts[2]));
fourthGuessDigit = Integer.parseInt(Character.toString(parts[3]));

答案 3 :(得分:0)

这应该这样做。

public class Test {

    public static void main(String[] args) {

        int firstGuessDigit, secondGuessDigit, thirdGuessDigit, fourthGuessDigit;
        String guess = "1234";

        String[] parts = new String[4];
        for(int i = 0; i < 4; i++) {
            parts[i] = ""+guess.charAt(i);
        }

        firstGuessDigit = Integer.parseInt(parts[0]);
        secondGuessDigit = Integer.parseInt(parts[1]);
        thirdGuessDigit = Integer.parseInt(parts[2]);
        fourthGuessDigit = Integer.parseInt(parts[3]);

    } 

}

答案 4 :(得分:0)

("%-11s%03d%n")%:用作格式化程序。

  • -:用于字符串左缩进的减号。
  • 11s:此处11表示字符串的最小字段宽度11。
  • 0:将整数填充零。
  • 3d:此处3表示整数的最小字段宽度3。
  • %n:打印新行。

希望,这会有所帮助!