我的代码在这里:
import java.util.Arrays;
public class Q1102 {
public static void main(String[] args) {
String temp = "1 3 5 7 6";
int[] array1 = new int[temp.length()];
for (int i = 0; i < temp.length(); i += 2) {
int mounth = Integer.parseInt(String.valueOf(temp.charAt(i)));
array1[i] = mounth;
}
System.out.println(Arrays.toString(array1));
}
}
由于一些奇怪的原因,程序输出:
[1, 0, 3, 0, 5, 0, 7, 0, 6]
有人可以告诉我为什么会这样,以及如何删除额外的零?
我已经打印出输入数组时输入的数值,并且没有任何额外的零。
答案 0 :(得分:4)
您使用的字符转换方式仅适用于单位数字,它在很多方面都很脆弱。相反,在空格上拆分String
,然后解析这些标记。像,
String temp = "1 3 5 7 6";
String[] tokens = temp.split("\\s+");
int[] array1 = new int[tokens.length];
for (int i = 0; i < tokens.length; i++) {
array1[i] = Integer.parseInt(tokens[i]);
}
System.out.println(Arrays.toString(array1));
输出(我认为你的预期)
[1, 3, 5, 7, 6]
答案 1 :(得分:0)
此行
temp.length()
中的问题。它将以9
的长度返回string
。如您所知,java采用默认值0
。这就是为什么您得到额外的零。
import java.util.Arrays;
public class Q1102 {
public static void main(String[] args) {
String temp = "1 3 5 7 6";
int length = (temp.length() + 1)/2;
int[] array1 = new int[length];
for (int i = 0, k = 0; i < temp.length(); i +=2, k++) {
int mounth = Integer.parseInt(String.valueOf(temp.charAt(i)));
array1[k] = mounth;
}
System.out.println(Arrays.toString(array1));
}
答案 2 :(得分:-2)
使用String
&#39; replaceAll()
功能替换空格。请找到以下工作代码。
public class Q1102 {
public static void main(String[] args) {
String temp = "1 3 5 7 6";
temp = temp.replace(" ", "");
int length = temp.length();
int[] array = new int[length];
for (int i=0; i<length; i++)
array[i] = Integer.parseInt(String.valueOf(temp.charAt(i)));
System.out.println(Arrays.toString(array));
}
}