最近写了一个素数发生器,可以生成相当大范围内的素数,由于素数很多,所以为了方便别的算法调用,我决定把生成的素数保存到一个文件当中去,按照通常的写法,我以生成100000以内的所有素数为例,写了如下语句:
d:/> java MakePrime >primebank..txt
primebank.txt文件顺利生成,但打开一看全是乱码,而我在命令行下的素数显示全部正常,这令我非常困惑。试着修改素数生成的范围,发现 1000以内的素数可以导出到文件并正常显示,但换成10000以内的素数就不行了。我的第一感觉这不是程序设计本身的问题,因为在命令行下,不仅 100000甚至更大范围内的素数都可以在命令行下正常显示,在反复调试后却始终找不到问题所在。
回寝室后请教同屋的达人,他起初也无法解释,不过达人毕竟是达人,反复修改代码,运行测试,最后发现居然是我写的素数输出语句的问题:
原语句如下:
……
System.out.print(n+" ");
……
修改为:
……
System.out.print(n+" ");
……
有什么区别吗?没有本质上区别,只不过将素数输出的间隔由一个空格调整为两个空格,结果运行导出到文件,结果显示一切OK。至于为什么,我觉得只有问 James Gosling他自己了^_^
d:/> java MakePrime >primebank..txt
primebank.txt文件顺利生成,但打开一看全是乱码,而我在命令行下的素数显示全部正常,这令我非常困惑。试着修改素数生成的范围,发现 1000以内的素数可以导出到文件并正常显示,但换成10000以内的素数就不行了。我的第一感觉这不是程序设计本身的问题,因为在命令行下,不仅 100000甚至更大范围内的素数都可以在命令行下正常显示,在反复调试后却始终找不到问题所在。
回寝室后请教同屋的达人,他起初也无法解释,不过达人毕竟是达人,反复修改代码,运行测试,最后发现居然是我写的素数输出语句的问题:
原语句如下:
……
System.out.print(n+" ");
……
修改为:
……
System.out.print(n+" ");
……
有什么区别吗?没有本质上区别,只不过将素数输出的间隔由一个空格调整为两个空格,结果运行导出到文件,结果显示一切OK。至于为什么,我觉得只有问 James Gosling他自己了^_^