【问题标题】:Java - print 1 billion to 2 billionJava - 打印 10 亿到 20 亿
【发布时间】:2019-03-11 12:45:51
【问题描述】:

我想打印出 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);

}

你会如何解决这个问题? 请帮帮我。

【问题讨论】:

  • 这可以正常工作。您面临的问题是数据的大小吗?
  • 如果 Eclipse 内存不足,请尝试在 eclipse 中增加内存。
  • 从 1 000 000 000 开始计数后,它在 1 006 000 000 处停止。我什至无法从控制台复制它。我不明白问题是什么。 @Rangas:如何增加 Eclipse 的内存? wenzi:如何直接打印成.txt文件?
  • 检查此链接以更新 Eclipse 内存设置。 stackoverflow.com/questions/2610194/…
  • 老兄!你真的需要打印出十亿个十位数的数字来证明你已经掌握了使用do...while循环来计算一系列数字的能力吗?为什么不从 100 开始,然后上升到 1000?只是说...

标签: java memory


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    • 最终文件: 10GB+
    • 开始时间:2018 年 10 月 6 日星期六 00:00:19 BRT
    • 结束时间:Sat Oct 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();
      }
      

    【讨论】:

    • 感谢您的解决方案!我试过了,但我的编辑器无法打开文件。你知道可以处理这么多数据的编辑器吗?
    • 超过 3 分钟,而不是几小时
    • @Thilo 是的,对不起。我住的地方是早上 5 点。我该睡觉了。
    • @CoreNoob 文件将保存在项目的根文件夹中
    【解决方案3】:

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

    java Counter &gt; output.txt # This will take lot of time.

    【讨论】:

    • 根据另一张海报,时间不是很长,大约几分钟(以及数十 GB 的磁盘空间)。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多