2

我有一个数字样本。我将它们存储在List带有时间戳和值的数据点中。这是我的代码:

List<Number> samples = {55,67,57,67};
List<Number[]> dps = Lists.newArrayList();

Calender c1; c1.set(2013, 5, 20, 15, 44, 00);

int timeStartSec = (int) (c1.getTime().getTime() / 1000);

for(Number num: samples){
    dps.add(new Number[] { timeStartSec, num});
    timeStartSec = timeStartSec+5;
}

System.out.println("Final DataPoints " + dps);

输出:

Final DataPoints [[Ljava.lang.Number;@af8358, [Ljava.lang.Number;@d80be3, [Ljava.lang.Number;@1f4689e, [Ljava.lang.Number;@1006d75, [Ljava.lang.Number;@1125127, [Ljava.lang.Number;@18dfef8, [Ljava.lang.Number;@15e83f9, [Ljava.lang.Number;@2a5330, [Ljava.lang.Number;@bb7465,]

为什么它打印为java.lang.Number而不是适当的值?

4

2 回答 2

9

数组不会覆盖该toString方法(很烦人)。看看Arrays.toString

Number[] nums = {1, 2, 3, 4};
System.out.println(nums);
System.out.println(Arrays.toString(nums));
[Ljava.lang.Number;@14b7453
[1、2、3、4]

在您的情况下,您将需要调用Arrays.toString的每个元素dps,打印/存储结果。

于 2013-06-24T19:29:41.897 回答
1

Array 的实例没有该toString()方法。您可能想ArrayList改用:

List<Number> samples - {55,67,57,67};
List<List<Number>> dps = new ArrayList<List<Number>>();

for(Number num: samples){

    dps.add(Arrays.asList(timeStartSec, 10));
    timeStartSec = timeStartSec+5;
}
System.out.println("Final DataPoints " + dps);

编辑:或类数组上定义的静态方法:Arrays.toString()

于 2013-06-24T19:31:48.103 回答