1. 程式人生 > >一個關於hello word的思考.

一個關於hello word的思考.

if(){
system.out.print("hello ");
}else{
system.out.print(" world ");
}
今天看到這樣一個帖子,說在if()中填寫什麼能夠在控制檯列印:hello  world 
咋一看,似乎這是不可能,但是當我們將視野放開闊一點,或許就會有答案了。
其實,我可以把這道題理解成一個腦筋急轉彎,那樣,分析的路子就有了:
既然要列印"hello  world ",這就必須要同時滿足if-else,但是我們知道,這
是不可能的,if和else只可能進入一個,既然是不可能,那要想打印出"hello  world ",
我們就得另闢蹊徑,那蹊徑在哪兒呢?就在我們要填的if()中。想一想,如果我們列印
的"hello "不是在if塊中,還能在哪兒?也只有在if的括號中了,這樣問題似乎就有了
解決的方向了,但是找到了方向,路該怎麼走呢?很顯然在括號中是不能直接寫:
system.out.print("hello ")的!這就得我們運用平時積累的知識來解決了!帖子中,
我看到了這樣的答案:
1、
if(Boolean.parseBoolean(
(new Object(){
public String toString(){
System.out.print("hello ");
return "false";
}
}).toString()
)){
   System.out.print("hello");
}else{
   System.out.print(" world ");
}

2、
if(System.out.append("hello")==null){
            System.out.println("hello");
        }else{
           System.out.println(" world ");
        }
帖子中除了這兩個答案,還有一個更精巧了。我剛剛說了,if和else不可能同時滿足,但是你
是否發現,上面的兩個答案都是進了else塊,那我們有沒有可能讓程式進入if塊呢?簡單的分析
一下,如果要進if塊,那在if()括號中就應該打印出" world "來,可是這樣的話,打印出來的也
不會是"hello world"啊,也應該是"world hello"啊!呵呵…… 看看高手是怎麼解決的吧:
3、
if( new Thread(){
{
this.start();
}
@Override
public void run() {
System.out.print(" world");
}
}.isAlive()){
System.out.print("hello");
}else{
System.out.println("world");
}
其實答案遠遠不止這些。有人說這樣寫有什麼意思呢?我覺得有一句話說的很好:“程式設計一種藝術,發
揮想象力不是很有意思麼 ”。其實這樣的思維不僅僅只是在程式設計中需要運用,我們在生活中,在成長的
道路上,往往會遇到一些看似不可能的事,其實這些事是不是真的不可能呢?或許只是因為我們沒有充
分地去思考,沒有努力地去尋找可能得答案!