一道在知乎很火的Java题——如何输出 ab

如何输出"ab"

public class OutAB {
    public static void main(String[] args) {
        if(){
            System.out.println("a");
        }else{
            System.out.println("b");
        }
    }
}

解法一
思路一:脑筋急转弯——注入一段逻辑直接改变原 if 结构。
填入内容 true){System.out.print("a");}if(false。

public static void main(String[] args) {
 if (true) {
            System.out.print("a");
        }
        if (false) {
            System.out.print("a");
        } else {
            System.out.print("b");
        }
}

类似地也可以填入 true){System.out.print("ab");return;}if(false 等。
解法二
思路二:如果正经遵从题目的原代码结构,那就得想办法构造一段代码,既能输出 a,又能返回 false。
我也想到能否使用 System.out.print 的返回值来做文章,但奈何并不记得它返回什么。首先让我们复习一下 PrintStream 的 print、println 和 printf 方法的区别:
方法功能返回值print打印一个值或者对象void println打印并换行void printf格式化打印Print Stream所以适用的是 printf,它的返回值是 PrintStream 类型的 System.out,判它是否为空即可。
经测试填入 System.out.append("a") == null 也是可以达到效果的。

public static void main(String[] args) {
        if (System.out.printf("a") == null) {
            System.out.print("a");
        } else {
            System.out.print("b");
        }
    }

解法三
与解法二是同一思路,但从匿名内部类来作文章。

public static void main(String[] args) {
        if (new Object() {
            boolean print() {
                System.out.print("a");
                return false;
            }
        }.print()) {
            System.out.print("a");
        } else {
            System.out.print("b");
        }
    }
这里利用的知识点是匿名内部类可以声明基类没有的新方法并且马上调用。

解法四
使用 Java 8 里的 lambda 来实现思路二。

public static void main(String[] args) {
        //如何输出"ab"
        if (((BooleanSupplier)(() -> {System.out.print("a");return false;})).getAsBoolean()) {
            System.out.print("a");
        } else {
            System.out.print("b");
        }
    }
严格来讲这个不一定能算作正确答案,因为要增加 import java.util.function.BooleanSupplier;。

解法五
脑洞大开:

public static void main(String[] args) {
        // if ( ) {
        System.out.print("a");
        // } else {
        System.out.print("b");
        // }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.抽象名词如birth、happiness、evolution、technology、management等是不...
    VincentZha_ae0a阅读 771评论 0 0
  • 文/小丑一人的康桥 前段时间,我得空了和妈妈一起去村西的林场看看,才发现一切早已改变了模样,那里荒草丛生,荒无人烟...
    小丑一人的康桥阅读 335评论 0 8
  • 公交车站,两个带着鸟笼的老人上了公交车,鸟笼很别致,里面装着一只小鸟,我只知道它是一只鸟,至于叫什么雀抑或什么鸟...
    岳凡阅读 573评论 0 0
  • 夕阳西下的时候 心里不知觉多了丝哀愁 失败后最怕我本可以却不得不将就 理想想了多久要去追寻自由却一直在找理由 明明...
    Tomion阅读 161评论 0 0
  • 巴尔尼巴比,这个在压迫下的国家,已经完全被无知与妄想给吞噬。 因为麻木不仁的民众们所认同的一个荒唐的科...
    丁昱天阅读 680评论 0 0