这个问题基本上是here讨论的扩展。我的目标是将两个格式化的列double
)。我目前要做到这一点的尝试如下:
try {
FileOutputStream fos = new FileOutputStream("angle.txt");
DataOutputStream dos = new DataOutputStream(fos);
for (i = 0; i < i_max-1; i = i + 1) {
dos.writeDouble(theta[i]);
}
dos.close();
} catch (IOException error) {
System.out.println("IOException: " + error);
}
此代码派生自找到的示例here(DataOutputStream)。由于对Java的掌握有限,我预计这只适用于一列;相反,它产生了这个:
?¹™™™™™š?¹™™™™™š?¹™™™™™š?¹™™™™™š?¹™™™™™š?¹™™™™™š?¹™™™™™š?¹™...
我不明白我做错了什么。 您可以提供的任何见解都会有很大的帮助。
我的下一个问题是:如何格式化double
类型的两个列,而不是格式("%1$16.6f, %2$16.6f", time[i], theta[i])
。现在我正在进行this次讨论。但是,编译器不喜欢使用writeDouble
。
非常感谢您的帮助和耐心。
答案 0 :(得分:4)
Streams用于写入二进制数据。要编写文本数据,请使用Writers。请参阅Java IO教程:http://docs.oracle.com/javase/tutorial/essential/io/charstreams.html
答案 1 :(得分:0)
解决方案:
try {
PrintWriter writer = new PrintWriter("angle.txt", "UTF-8");
for (i = 1; i < i_max; i = i + 1) {
writer.printf("%1$16.6f%2$16.6f%n", time[i], theta[i]);
}
writer.close();
} catch (IOException ioe) {
System.out.println(ioe);
}