我想打印1000000至1999999999。
我以为这是一件容易的事,但是蚀告诉了我一些有关内存错误的信息。 我该怎么办? 我想要一个文本数据,其中所有数字都来自
将1000000000至1999999999分别记录在新行中。 我以为可以在控制台中将它们打印出来,然后将其复制并粘贴到.txt数据中就可以了,但遗憾的是没有。
我的代码:
public static void main(String[] args) {
int number = 1000000000;
do {
System.out.println(number);
number = number +1;
} while (number < 2000000000);
}
您将如何解决此问题?
请帮我。
这可能会正常工作。您面临的问题是数据大小吗?
如果Eclipse内存不足,请尝试增加Eclipse中的内存。
从1 000 000 000开始计数,它停在1 006 000000。我什至不能从控制台复制它。我不明白问题是什么。 @Rangas:如何增加Eclipse的记忆? wenzi:如何直接打印到.txt文件?
检查此链接以更新蚀存储器设置。 stackoverflow.com/questions/2610194/
杜德!您是否真的需要打印出十亿个十位数字来证明您已使用do...while循环来掌握一系列数字?为什么不从100开始到上升到1000?只是在说...
或者假设这与掌握循环无关,但是您确实需要一个十亿个数字的列表,文本文件可能不是存储这些数字的最佳方法。接下来您需要与他们做什么?
是的,我确实需要打印出十亿个十位数的数字。什么都不证明。我无法使用标准编辑器打开它。但发现:emeditor.com
您遇到的问题是因为您正在要求Eclipse在内存中缓冲1,000,000,000 x 11或12个字符。大于20 GB,对于Eclipse进程堆来说显然太大了。
除非您在具有大量RAM的真正高端PC上运行Eclipse,否则该方法根本行不通。即使那样,我也有怀疑。例如,复制和粘贴100亿个字符可能无效。
您需要采取另一种方法。例如让您的应用程序将数字直接写入输出文件。
我只是编写了这段代码,通过运行它,我得到了以下结果:
最终文件:10GB以上
开始时间:2018年10月6日星期六00:00:19 BRT
结束时间:2018年10月6日星期六00:03:25
try {
FileWriter writer = new FileWriter("count.txt");
System.out.println(new Date());
int number = 1000000000;
do {
writer.write(number +"
");
} while (number++ < 2000000000);
System.out.println(new Date());
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
谢谢您的解决方案! 我尝试了一下,但是编辑器无法打开该文件。 您是否知道可以处理此数据量的编辑器?
超过3分钟,而不是几个小时
@Thilo是的,对不起。 我住的地方是凌晨5.00。 我应该去睡觉
@CoreNoob文件将保存在项目的根文件夹中
最好从命令行运行类文件并重定向输出。假设您正在" unixy"类环境中运行。
java Counter > output.txt # This will take lot of time.
根据另一张海报,这不是很糟糕的时间,大约是几分钟(和数十GB的磁盘空间)。 :-)