我尝试将值打印到一个文件中,但是当超过 4 位数字时我的结果被截断了:
import java.io.FileNotFoundException;
import java.math.BigInteger;
public class create_referencevalues {
/**
* @param args
*/
public static void main(String[] args) {
Long[] list = { 10L, 40L, 90L, 160L, 250L, 350L, 500L, 650L, 800L,
1000L };
try {
java.io.PrintStream p = new java.io.PrintStream(
new java.io.BufferedOutputStream(
new java.io.FileOutputStream(new java.io.File(
"C:/users/djdeejay/listall.csv"), false)));
for (long i = 0; i < 1024; i++) {
//p.print(Long.toBinaryString(i));
Long sum1 = 0L;
for (int j = 0; j < 10; j++) {
if (BigInteger.valueOf(i).testBit(j)) {
sum1 += (list[j]);
}
}
p.println( i + ";"+sum1);
}
p.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
这是打印的最后 5 个值:
1018;3750
1019;3760
1020;3800
1021;3810
1022;3840
1023;3850
最后应该是:38500
我在这里想念什么???
最佳答案
println
没有问题。您的代码完全符合我的预期。考虑最后一行,您声称它不正确:
1023;3850
十进制的1023
是二进制的1111111111
。因此,当 i=1023
时,程序的内部循环将简单地计算 list
中所有数字的总和。这些数字加起来为 3850
,这就是打印的内容。
关于java打印到文件削减数字的最后一位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18388919/