Java阵列错误数组表

时间:2017-10-06 17:32:20

标签: java

为什么会发生这种情况,为什么不给我 * ThisIsWhatItShouldBh

代码

class ArreyTable{ 
    public static void main(String OKM[]){              
        System.out.println("Index\tValue");         
        int px[] = {144,240,360,480,720};               
        for(int counter=0; counter<px.length; counter++){           
            System.out.println(counter + "\t" + px);        
        }           
    }
}

cmd结果

Index     Value
 0         [I@7852e922 
1          [I@7852e922 
2          [I@7852e922 
3          [I@7852e922 
4          [I@7852e922

ThisIsWhatItShouldBe

Index   Value
0          144
1          240
2          360
3          480
4          720

4 个答案:

答案 0 :(得分:3)

您正在打印整个数组而不是相关元素,[]运算符可以访问该元素:

for(int counter=0; counter<px.length; counter++){
    System.out.println(counter + "\t" + px[counter]);
    // Here ------------------------------^
}

答案 1 :(得分:1)

在代码块中

for(int counter=0; counter<px.length; counter++){           
    System.out.println(counter + "\t" + px);        
}           

您每次都将数组px转换为字符串,出于内部JVM原因,这是[I@7852e922

您必须在阵列上指明索引

for(int counter=0; counter<px.length; counter++){           
    System.out.println(counter + "\t" + px[counter]);        
}           

这将产生预期的结果。

此外,您可以将println替换为printf

for(int counter=0; counter<px.length; counter++){           
    System.out.printf("%2d: %3d%n", counter, px[counter]);        
}           

答案 2 :(得分:0)

只需更改此行:  System.out.println(counter +&#34; \ t&#34; + px [counter] );

所以它会知道返回什么值;)

答案 3 :(得分:0)

您最初打印整个px数组对象。正在打印的是数组对象的toString()函数的输出。

Object.toString()方法返回一个字符串,该字符串由类的名称,@符号和十六进制对象的哈希码组成。

当你使用px [counter]时,它引用该索引处的元素值。

正确的解决方案是:

for(int counter=0; counter<px.length; counter++){           
        System.out.println(counter + "\t" + px[counter]);        
    }