假设我有一个字符串“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++;
}
}
}
但它不起作用,请提供一些帮助。谢谢!
答案 0 :(得分:11)
你忘记了
temp
重置为空字符串以创建新数字的位置在字符串末尾没有空格,所以
if (numbers.charAt(i) == ' ') {
ary[j] = Integer.parseInt(temp);
j++;
}
不会调用,这意味着您需要调用
ary[j] = Integer.parseInt(temp);
循环后再次
但更简单的方法是使用split(" ")
创建临时的令牌数组,然后将每个令牌解析为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);
}
其他方法可能是使用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 8,您可以使用可以缩短代码的Streams
int[] array = Stream.of(numbers.split(" "))
.mapToInt(token -> Integer.parseInt(token))
.toArray();
答案 1 :(得分:7)
对于java 8+,你可以这样使用:
final Integer[] ints = Arrays.stream(numbers.split(" "))
.map(Integer::parseInt)
.toArray(Integer[]::new);
或者,如果你需要原始的int,你可以使用它:
final int[] ints = Arrays.stream(numbers.split(" "))
.mapToInt(Integer::parseInt)
.toArray();
答案 2 :(得分:0)
将tmp String重置为&#34;&#34;在解析整数之后,除非您希望继续将字符串的所有数字附加在一起。还有其他选择 - 例如将String拆分为空间characeter上的数组,然后单独解析数字
答案 3 :(得分:0)
试试这个,
public static void main(String[] args) {
String numbers = "12 1 890 65";
String[] parts = numbers.split(" ");
int[] ary = new int[4];
int element1 = Integer.parseInt(parts[0]);
int element2 = Integer.parseInt(parts[1]);
int element3 = Integer.parseInt(parts[2]);
int element4 = Integer.parseInt(parts[3]);
ary[0] = element1;
ary[1] = element2;
ary[2] = element3;
ary[3] = element4;
for(int i=0; i<4; i++){
System.out.println(ary[i]);
}
}
答案 4 :(得分:0)
我在android开发中遇到了类似的问题。我想将长字符串转换为两个数组-String数组xtokens和int数组ytokens。
String result = "201 5 202 8 203 53 204 8";
String[] tokens = result.split(" ");
String[] xtokens = new String[tokens.length/2 + 1];
int[] ytokens = new int[tokens.length/2 + 1];
for(int i = 0, xplace = 0, yplace = 0; i<tokens.length; i++){
String temptoken = new String(tokens[i]);
if(i % 2 == 0){
xtokens[xplace++] = temptoken;
}else {
ytokens[yplace++] = Integer.parseInt(temptoken);
}
}
您可以首先将此字符串转换为以空格分隔的字符串数组,然后将其转换为int数组。