1

尝试此操作时出现上述错误

for (int i = 0 ; i < uaCount.get(args[1]).occurrences ; i++)
    {
        out.write(uaCount.get(args[1]).singleValues.get(i));
    }

Occurrences 和 singleValues 在这里定义:

public static class NumberHolder
{
    public int occurrences = 0;
    public int sumtime_in_milliseconds = 0; 
    public ArrayList<Long> singleValues = new ArrayList<Long>();
}

有没有办法解决这个问题?

4

4 回答 4

5

鉴于问题的标题,我你只是想用来String.valueOf创建一个字符串:

for (int i = 0 ; i < uaCount.get(args[1]).occurrences ; i++)
{
    out.write(String.valueOf(uaCount.get(args[1]).singleValues.get(i)));
}

请注意,尽管如此,值之间不会有分隔符。我还建议为了便于阅读,您可以编写如下内容:

NumberHolder holder = uaCount.get(args[1]);
for (int i = 0; i < holder.occurrences; i++)
{
    long value = holder.singleValues.get(i);
    out.write(String.valueOf(value));
    // Maybe out.write(" ") or something similar, as a separator?
}

此外,我强烈建议您不要像您目前所做的那样使用公共字段。尝试更仔细地封装您的类型。如果occurrences实际上是列表的大小,您可以使用增强for循环来简化事情。例如:

for (long value : uaCount.get(args[1]).getSingleValues()) {
    out.write(String.valueOf(value));
}
于 2013-04-10T19:45:28.310 回答
0

改变:

public ArrayList<Long> singleValues = new ArrayList<Long>();

public ArrayList<Integer> singleValues = new ArrayList<Integer>();

将消除错误。当然,您将希望避免在 singleValues 中放置任何 long 或 Long 值。

于 2013-04-10T19:46:55.870 回答
0

java.io.BufferedWriter 的文档中

将文本写入字符输出流,缓冲字符,以便高效写入单个字符、数组和字符串。

Long 不是文本,Jon Skeet提出了解决方案,使用String.valuesOf()将 Long 转换为 String 。

于 2013-04-10T19:49:00.487 回答
-2

将其更改为 (int)(long)out.write(uaCount.get(args[1]).singleValues.get(i));. 你必须将 Long 转换为整数

于 2013-04-10T19:46:17.383 回答