我想拆分一个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)
答案 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
:打印新行。希望,这会有所帮助!