为了账号安全,请及时绑定邮箱和手机立即绑定

Java - 打印 10 亿到 20 亿

Java - 打印 10 亿到 20 亿

茅侃侃 2021-10-28 17:04:05
我想打印出 1 000 000 000 到 1 999 999 999。我认为这将是一项简单的任务,但 eclipse 告诉我一些有关内存错误的信息。我怎么能这样做?我想要一个文本数据,其中从 1000000000 到 1999999999 的所有数字都写在一个新行中。我以为在控制台中将它们打印出来,然后只需将它们复制并粘贴到 .txt 数据中即可,但遗憾的是它没有。我的代码:    public static void main(String[] args) {    int number = 1000000000;    do {        System.out.println(number);        number = number +1;    } while (number < 2000000000);}你会如何解决这个问题?请帮我。
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

您遇到的问题是因为您要求 Eclipse 在内存中缓冲 1,000,000,000 x 11 或 12 个字符。即 > 20 GB,对于 Eclipse 进程堆来说显然太大了。

这种方法根本行不通,除非您在具有大量 RAM 的真正高端 PC 上运行 Eclipse。即便如此,我仍有疑问。例如,复制粘贴 100 亿个字符可能行不通。

你需要采取另一种方法;例如,让您的应用程序将数字直接写入输出文件。


查看完整回答
反对 回复 2021-10-28
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

我刚刚写了这段代码,通过运行它,我得到了以下结果:

  • 最终文件: 10GB+

  • 开始时间: 周六 06 00:00:19 BRT 2018

  • 完成时间: 周六 06 00:03:25 BRT 2018

 try { 

    FileWriter writer = new FileWriter("count.txt");

    System.out.println(new Date());

    int number = 1000000000;

    do {

        writer.write(number + "\n");

    } while (number++ < 2000000000);

    System.out.println(new Date());

    writer.close(); 

} catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

}


查看完整回答
反对 回复 2021-10-28
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

最好从命令行运行类文件并重定向输出。假设您在“unixy”类型的环境中运行。

java Counter > output.txt # This will take lot of time.


查看完整回答
反对 回复 2021-10-28
  • 3 回答
  • 0 关注
  • 143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信