gpt4 book ai didi

java - 显示从 1 到 100 的数字,没有循环或条件

转载 作者:IT老高 更新时间:2023-10-28 20:56:21 25 4
gpt4 key购买 nike

有没有一种方法可以打印从 1 到 100 的数字,而无需使用任何循环或条件,例如“if”?我们可以很容易地使用递归,但这又是一个 if 条件。有没有办法不使用“if”?也没有重复的打印语句,或包含从 1 到 100 的所有数字的单个打印语句。

最好使用 Java 解决方案。

最佳答案

了解您的库。

public class To100 {
public static void main(String[] args) {
String set = new java.util.BitSet() {{ set(1, 100+1); }}.toString();
System.out.append(set, 1, set.length()-1);
}
}

(你可以使用String.replaceAll来改变分隔符,比如.replaceAll(", ", "") 进行空格分隔。)

解释:

  • java.util.BitSet 是一个方便的小类,它表示任意大(非稀疏)的正整数集。 (它确实有很多不好的地方:不是最终的,不必要的线程安全,不支持构建良好等)ta。
  • Extends BitSet 只允许我编写一次 java.util。 JDK7“菱形运算符”应该有助于减少泛型类型的重复,但对于更常见的情况没有帮助。 :(
  • 双括号是 Double Brace idiom - 一个只包含一个实例初始化器的匿名内部类。这是一个黑客。它增加了运行时大小,因此增加了启动时间。如果使用 pack200.gz,分布大小可以忽略不计。我认为现代世界已经为它做好了准备。你的同事可能不是。也许先用它来测试吧
  • BitSet.set 在集合中设置一个位(“集合”这个词的两个完全不同的含义 - 我喜欢它)。这是一个半开区间——不包括最高值;底部包容。将 1 添加到顶部以包含 100。
  • BitSet.toString 实际上是由 API 文档精确定义的。
  • append 被添加到 PrintStream 中,并在 J2SE 5.0 中引入了 Appendable 接口(interface)。它本质上是一个子字符串并打印结果。 (一个小 secret :规范实际上并不能保证刷新输出,但实现总是会的。)
  • 从 1 开始追加,并从长度中删除一个从 BitSet 的字符串表示形式中去除大括号。
  • “了解你的图书馆。”取自乔什·布洛赫。请参阅 Java Puzzlers,谜题 94。了解库中的内容真的很好。至少知道去哪里找。节省您的时间,节省维护时间,并在第一时间就做好。

关于java - 显示从 1 到 100 的数字,没有循环或条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2044033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com