亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

一道在知乎很火的Java題——如何輸出 ab

標簽:
Java

如何输出"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人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
JAVA開發工程師
手記
粉絲
37
獲贊與收藏
353

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消