假设我有一个字符串“1 23 40 187 298”。该字符串仅包含整数和空格。如何将此字符串转换为整数数组,即 [1,23,40,187,298]。 我就是这样尝试的
public static void main(String[] args) {
String numbers = "12 1 890 65";
String temp = new String();
int[] ary = new int[4];
int j=0;
for (int i=0;i<numbers.length();i++)
{
if (numbers.charAt(i)!=' ')
temp+=numbers.charAt(i);
if (numbers.charAt(i)==' '){
ary[j]=Integer.parseInt(temp);
j++;
}
}
}
但是它不起作用,请提供一些帮助。谢谢!
最佳答案
你忘了
- 在解析后将
temp
重置为空字符串以创建新数字的位置 你的字符串末尾没有空格,所以
if (numbers.charAt(i) == ' ') { ary[j] = Integer.parseInt(temp); j++; }
不会被调用,这意味着你需要调用
ary[j] = Integer.parseInt(temp);
在你的循环之后再次
但更简单的方法是使用 split("")
创建临时的 token 数组,然后将每个 token 解析为 int
就像
String numbers = "12 1 890 65";
String[] tokens = numbers.split(" ");
int[] ary = new int[tokens.length];
int i = 0;
for (String token : tokens){
ary[i++] = Integer.parseInt(token);
}
也可以通过 Java 8 中添加的流来缩短:
String numbers = "12 1 890 65";
int[] array = Stream.of(numbers.split(" "))
.mapToInt(token -> Integer.parseInt(token))
.toArray();
其他方法可能是使用 Scanner
及其 nextInt()
方法从您的输入中返回所有整数。假设您已经知道所需数组的大小,您可以简单地使用
String numbers = "12 1 890 65";
int[] ary = new int[4];
int i = 0;
Scanner sc = new Scanner(numbers);
while(sc.hasNextInt()){
ary[i++] = sc.nextInt();
}
关于java - JAVA中如何将以空格分隔的整数字符串转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29219418/