我想拆分一个字符串,并将字符串的每个数字存储为整数。
这是我的测试代码:
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)
您可以改用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]));
您可以使用chars()
流获得字符串的字符,并使用Character.getNumericValue
将它们映射为它们的数值:
"1234".chars().map(Character::getNumericValue).toArray()
如果您希望将它们作为列表而不是数组来获取,则可以使用:
"1234".chars().map(Character::getNumericValue).boxed().collect(Collectors.toList())
您得到的错误是因为您尝试在没有零件时尝试做零件[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);
}
}
应该这样做。
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]);
}
}
("%-11s%03d%n")%
:用作格式化程序。
-
:减号,用于字符串的左缩进。 11s
:此处11表示字符串的最小字段宽度11。0
:将整数填充零。3d
:此处3表示整数的最小字段宽度3。%n
:打印新行。希望,这会有所帮助!