Java 为什么数组中有额外的值?

Java 为什么数组中有额外的值?,java,arrays,Java,Arrays,我的代码在这里: 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) {

我的代码在这里:

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));
    }
}
有人能告诉我为什么会发生这种情况,以及如何删除多余的零吗


我已经在输入时打印出了输入数组的值,并且没有任何额外的零。

您使用的字符转换方式仅适用于单个数字,它在许多方面都很脆弱。相反,在空白处拆分
字符串
,然后解析这些标记。像

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));

您使用的字符转换方式仅适用于单个数字,它在许多方面都很脆弱。相反,在空白处拆分
字符串
,然后解析这些标记。像

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));
这一行中有一个问题
temp.length()
。它将以
字符串
长度返回
9
。正如您所知,java采用默认值
0
。这就是为什么你会得到额外的零

导入java.util.array;
公开课Q1102{
公共静态void main(字符串[]args){
字符串temp=“1 3 5 7 6”;
整数长度=(温度长度()+1)/2;
int[]数组1=新的int[长度];
对于(inti=0,k=0;i
这一行中的问题是
temp.length()
。它将返回
9
作为
string
长度。正如您所知,java采用默认值
0
。这就是为什么会得到额外的零

导入java.util.array;
公开课Q1102{
公共静态void main(字符串[]args){
字符串temp=“1 3 5 7 6”;
整数长度=(温度长度()+1)/2;
int[]数组1=新的int[长度];
对于(inti=0,k=0;i
您能解释什么
temp.length()
是什么?这是学习使用调试器的一个很好的例子(在
int[]
行上设置断点)将帮助您获得巨大的启发
int
数组中
int
值的默认值是
0
您有
i+=2
-因此
i
只遍历偶数。这意味着您只在数组中设置偶数点。
System.out.printf(“长度是%d%n”,“1 3 5 7 6.length());
temp.length给出数组的长度错误
temp
是字符串吗可以解释
temp.length()
的作用吗?另外,这是学习使用调试器的一个很好的例子(在
int[]
行上设置断点)将帮助您获得巨大的启发
int
数组中
int
值的默认值是
0
您有
i+=2
-因此
i
只遍历偶数。这意味着您只在数组中设置偶数点。
System.out.printf(“长度是%d%n”,“1 3 5 7 6.length());
temp.length给出数组的长度错误
temp
是字符串
[1, 3, 5, 7, 6]
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));

}