使用Java,从最小到最大的int的所有可能值

Vla*_*dim 7 java

编写一个程序,使用Java打印出从最小到最大的int数据类型的所有可能值.

截至2009年5月8日格林尼治标准时间10:44的一些值得注意的解决方案:

1)Daniel Lew是第一个发布正确工作代码的人.

2)Kris 为给定问题提供了最简单的解决方案.

3)Tom Hawtin - 强调,可以说是最优雅的解决方案.

4)mmyers指出,打印很可能成为瓶颈,可以通过缓冲来改善.

5)Jay的暴力方法值得注意,因为除了违反编程的核心点之外,最终的源代码大约需要128 GB并且会破坏编译器限制.

作为旁注,我相信答案确实证明它可能是一个很好的面试问题,只要重点不在于能否记住关于数据类型溢出及其含义的琐事(在单元测试中很容易发现) ),或获取MAX和MIN限制的方式(可以在文档中轻松查找),而是分析处理问题的各种方法.

Dan*_*Lew 15

class Test {
    public static void main(String[] args) {
        for (int a = Integer.MIN_VALUE; a < Integer.MAX_VALUE; a++) {
            System.out.println(a);
        }
        System.out.println(Integer.MAX_VALUE);
    }
}
Run Code Online (Sandbox Code Playgroud)

我被录用了吗?

  • 如果你不添加最后一行,你的循环永远不会终止.使用您的方法,当a == Integer.MAX_VALUE时,您将打印它,递增a,突然a将是Integer.MIN_VALUE. (11认同)
  • 我相信马修已经说明了为什么这可能是一个很好的面试问题...... (10认同)
  • @Dave:当Kris已经使用了那种确切的方法时,为什么我会改变我的答案?如果每个人都编辑他们的答案是相同的,那么对任何人都没有帮助,特别是当我们的两个答案都有效时.此外,我的解决方案很容易翻译成"打印所有长的值",而使用long的版本将不得不转移到BigInt使用相同的解决方案(因此会慢得多). (4认同)

Kri*_*ris 14

最简单的形式(最小代码):

    for (long i = Integer.MIN_VALUE; i <= Integer.MAX_VALUE; i++) {
        System.out.println(i);
    }
Run Code Online (Sandbox Code Playgroud)

没有整数溢出,没有额外的检查(只是更多的内存使用,但谁没有32个备用位).

虽然我想

    for (long i = Integer.MIN_VALUE; i <= Integer.MAX_VALUE; i++)
        System.out.println(i);
Run Code Online (Sandbox Code Playgroud)

字符较少,我不能说它更简单.更短不一定更简单,但它确实有更少的代码.

  • 你完全不需要那些回车或花括号! (4认同)
  • 另一个曲线球 - 使用"服务器"VM,它实际上将在中间终止.有一个HotSpot错误会将'i <= Integer.MAX_INT'(可能需要两个比较'<'和'=')转换为'i <Integer.MAX_INT + 1'.因为它会溢出并变成负数,所以循环将终止.但是,这不是案例 - 客户模式. (2认同)

Tom*_*ine 8

我只需要添加答案......

public class PrintInts {
    public static void main(String[] args) {
        int i = Integer.MIN_VALUE;
        do {
            System.out.println(i);
            ++i;
        } while (i != Integer.MIN_VALUE);
    }
}
Run Code Online (Sandbox Code Playgroud)
  • 我们不希望身体重复(想想维护!)
  • 它不会永远循环.
  • 它为计数器使用适当的类型.
  • 它不需要一些狂野的第三方怪人库.


cd1*_*cd1 2

的最大值为intInteger.MAX_VALUE最小值为Integer.MIN_VALUE。使用循环打印所有内容。

  • 那是2个英文句子,不是Java程序。:-) (3认同)