BufferedWriter类型中的方法write(int)不适用于参数(Long)

use*_*843 1 java bufferedwriter long-integer

我尝试这个时遇到上述错误

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

这里定义了出现次数和单值:

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

有什么方法可以解决这个问题吗?

Jon*_*eet 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)));
}
Run Code Online (Sandbox Code Playgroud)

请注意,值之间不会有任何分隔符.我还建议,为了便于阅读,你会写一些类似于:

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?
}
Run Code Online (Sandbox Code Playgroud)

此外,我强烈建议您不要像现在这样使用公共字段.尝试更仔细地封装您的类型.如果occurrences实际上是列表的大小,您可以使用增强型for循环来简化操作.例如:

for (long value : uaCount.get(args[1]).getSingleValues()) {
    out.write(String.valueOf(value));
}
Run Code Online (Sandbox Code Playgroud)