Java - 打印 10 亿到 20 亿

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


}

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


茅侃侃
浏览 151回答 3
3回答

三国纷争

您遇到的问题是因为您要求 Eclipse 在内存中缓冲 1,000,000,000 x 11 或 12 个字符。即 > 20 GB,对于 Eclipse 进程堆来说显然太大了。这种方法根本行不通,除非您在具有大量 RAM 的真正高端 PC 上运行 Eclipse。即便如此,我仍有疑问。例如,复制粘贴 100 亿个字符可能行不通。你需要采取另一种方法;例如,让您的应用程序将数字直接写入输出文件。

叮当猫咪

我刚刚写了这段代码,通过运行它,我得到了以下结果:最终文件:&nbsp;10GB+开始时间: 周六 06 00:00:19 BRT 2018完成时间: 周六 06 00:03:25 BRT 2018&nbsp;try {&nbsp;&nbsp; &nbsp; FileWriter writer = new FileWriter("count.txt");&nbsp; &nbsp; System.out.println(new Date());&nbsp; &nbsp; int number = 1000000000;&nbsp; &nbsp; do {&nbsp; &nbsp; &nbsp; &nbsp; writer.write(number + "\n");&nbsp; &nbsp; } while (number++ < 2000000000);&nbsp; &nbsp; System.out.println(new Date());&nbsp; &nbsp; writer.close();&nbsp;} catch (IOException e) {&nbsp; &nbsp; // TODO Auto-generated catch block&nbsp; &nbsp; e.printStackTrace();}

拉丁的传说

最好从命令行运行类文件并重定向输出。假设您在“unixy”类型的环境中运行。java Counter > output.txt # This will take lot of time.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java