Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java数组问题_Java_Arrays - Fatal编程技术网

Java数组问题

Java数组问题,java,arrays,Java,Arrays,所以这只是一个基本问题。我在用Java处理数组,弄明白了我的小任务需要做什么。我决定玩一下数组,看看如果我打印出数组会发生什么。我对使用此代码得到的结果感到非常困惑: public class array_output{ public static void main(String[] args){ int[] anArray = new int[10]; for(int p = 0; p < 10; p++){ anArray[p

所以这只是一个基本问题。我在用Java处理数组,弄明白了我的小任务需要做什么。我决定玩一下数组,看看如果我打印出数组会发生什么。我对使用此代码得到的结果感到非常困惑:

public class array_output{
    public static void main(String[] args){
       int[] anArray = new int[10];
       for(int p = 0; p < 10; p++){
           anArray[p] = p;
           //System.out.print(anArray[p] + " ");
           p++;
       }
       System.out.println (java.util.Arrays.toString(anArray));
    }
}
实际上,当我写这篇文章的时候,我认为它是用一个“0”来代替那些不在0-9之间的数字,比如0是假的,如果这个数字显示它在数组中,尽管不确定


如果有人能向我解释一下这里是否发生了这种情况,或者解释一下如何在for循环之外打印数组的值,我将非常感激在
for
循环的每次迭代中,您将增加
p
两次。
因此,仅分配数组(0,2,4,6,8)的偶数索引

for(int p=0; p<10; p++){ // <-- first time here
    anArray[p]=p;
    //System.out.print(anArray[p] + " ");
    p++; // <-- second time here
}

循环的
每次迭代中,您将增加
p
两次。
因此,仅分配数组(0,2,4,6,8)的偶数索引

for(int p=0; p<10; p++){ // <-- first time here
    anArray[p]=p;
    //System.out.print(anArray[p] + " ");
    p++; // <-- second time here
}

在每次迭代中,您将递增
p
两次:

for(int p = 0; p < 10; p++) { // here
    anArray[p] = p;
    p++; // and here
}

i、 e.初始化数组中的每个元素,使其位置乘以2。

您在每次迭代中递增
p
两次:

for(int p = 0; p < 10; p++) { // here
    anArray[p] = p;
    p++; // and here
}

i、 初始化数组的每个元素,使其位置乘以2。

您的问题是,将循环变量
p
增加两次:在常规for循环中增加一次,在for循环结束时增加第二次-因此索引每两步跳过一次,跳过的数组元素根本不会被填充

解决方案是正常迭代,但将索引*2放在当前数组位置:

public class array_output{
        public static void main(String []args){
        int[] anArray = new int[10];

        for(int p=0; p<10; p++){
            anArray[p]=p * 2;
        }

        System.out.println (java.util.Arrays.toString(anArray));
    }
}
公共类数组\u输出{
公共静态void main(字符串[]args){
int[]anArray=新int[10];

for(int p=0;p您的问题是,将循环变量
p
增加两次:在常规for循环中增加一次,在for循环结束时增加第二次-因此,索引每两步跳过一次,跳过的数组元素根本不会被填充

解决方案是正常迭代,但将索引*2放在当前数组位置:

public class array_output{
        public static void main(String []args){
        int[] anArray = new int[10];

        for(int p=0; p<10; p++){
            anArray[p]=p * 2;
        }

        System.out.println (java.util.Arrays.toString(anArray));
    }
}
公共类数组\u输出{
公共静态void main(字符串[]args){
int[]anArray=新int[10];

对于(int p=0;p我建议看一下

引述:

数组组件是未命名的变量,每当创建作为数组的新对象(§10,§15.10)时,都会创建并初始化为默认值(§4.12.5)。当不再引用数组时,数组组件实际上不再存在

在本例中,您使用的是
int
,默认情况下,这些值初始化为0

这就是你得到的原因:[0,0,2,0,4,0,6,0,8,0] 因为“缺失”值实际上并没有改变它们的默认值。
2468
是因为您将
p
增加了两次,但我不确定这是出于设计还是错误,因为您最初的问题似乎表明了前者

如果你只想让它包含:024468 您可以使用以下代码:

public class array_output{
    public static void main(String[] args){
       int[] anArray = new int[5];
       for(int p = 0; p < 5; p++){
           anArray[p] = p * 2;
       }
       System.out.println (java.util.Arrays.toString(anArray));
    }
}
公共类数组\u输出{
公共静态void main(字符串[]args){
int[]anArray=新的int[5];
对于(int p=0;p<5;p++){
anArray[p]=p*2;
}
System.out.println(java.util.Arrays.toString(anArray));
}
}

如果只希望数组包含5个元素,那么没有理由将数组初始化为10大小。

我建议您查看

引述:

数组组件是未命名的变量,每当创建作为数组的新对象(§10,§15.10)时,都会创建并初始化为默认值(§4.12.5)。当不再引用数组时,数组组件实际上不再存在

在本例中,您使用的是
int
,默认情况下,这些值初始化为0

这就是你得到的原因:[0,0,2,0,4,0,6,0,8,0] 因为“缺失”值实际上并没有改变它们的默认值。
2468
是因为您将
p
增加了两次,但我不确定这是出于设计还是错误,因为您最初的问题似乎表明了前者

如果你只想让它包含:024468 您可以使用以下代码:

public class array_output{
    public static void main(String[] args){
       int[] anArray = new int[5];
       for(int p = 0; p < 5; p++){
           anArray[p] = p * 2;
       }
       System.out.println (java.util.Arrays.toString(anArray));
    }
}
公共类数组\u输出{
公共静态void main(字符串[]args){
int[]anArray=新的int[5];
对于(int p=0;p<5;p++){
anArray[p]=p*2;
}
System.out.println(java.util.Arrays.toString(anArray));
}
}

如果只希望数组包含5个元素,则没有理由将数组初始化为大小为10。

嗨,当您声明数组时,无需担心:

int[] anArray = new int[10];
它在从0到9的所有索引中初始化为“0”

插入值时,它将插入:

anArray[0]=0;
anArray[2]=2;
anArray[4]=4;
anArray[6]=6;
anArray[8]=8;
因为在所有其他索引中,值已经是“0”。 因此,如果您打印阵列,它将按如下方式打印:

[0, 0, 2, 0, 4, 0, 6, 0, 8, 0]
如果要打印阵列,只需运行for循环并按以下方式打印:

for(int i=0;i<10;i++)
  System.out.println(anArray[i]);

for(int i=0;iHi)无需担心,当您声明如下数组时:

int[] anArray = new int[10];
它在从0到9的所有索引中初始化为“0”

插入值时,它将插入:

anArray[0]=0;
anArray[2]=2;
anArray[4]=4;
anArray[6]=6;
anArray[8]=8;
因为在所有其他索引中,值已经是“0”。 因此,如果您打印阵列,它将按如下方式打印:

[0, 0, 2, 0, 4, 0, 6, 0, 8, 0]
如果要打印阵列,只需运行for循环并按以下方式打印:

for(int i=0;i<10;i++)
  System.out.println(anArray[i]);

for(int i=0;i默认情况下,int数据类型用值0初始化。由于您将p增加两次(一次在for循环中,一次在循环体中),因此只有索引为偶数的元素才能更改其值


因此,在第一次迭代中,您得到了anArray[0]=0。然后,您将p增加两次,因此在第二次迭代中,p等于2,您将得到anArray[2]=2,而anArray[1]被跳过。

默认情况下,int数据类型用值0初始化。因为您增加了p