`

一个中午对战if-else你想不到的结果

 
阅读更多

           今天中午,同学问我一个问题,题目很简单,但是我却折腾了一个中午。最后还是在谷歌的帮助下找到了答案,那个纠结啊,通过这个题目也可以看出自己在一些基础知识上的薄弱,贴出来,给大家看看,挺有意思的。

     题目是这样的:(可以尝试先做一下再看下面的答案)

请把美貌和智慧赋给同一个女人
上天从不把美貌和智慧赋给同一个女人。下面有一段代码,请你在空处填写一段代码,
使之打印出:“我很美!我也很有才!”
public static void main(String[] args){ 
if(____________________________){ 
System.out.print("我很美!  "); 
}else{ 
System.out.println("我也很有才!"); 
}  } 

    一看到题目,我第一的反应就是,你不是在坑我嘛,愚人节也过去了那么多天了,这个if-else语句我还是懂的啊,大一上学期的C语言就学过了,两个语句不可能同时执行啊,只要有一点点基础的人都知道,但是凭我对他的了解,他应该是认真的,所以我就想啊想,开始我的想法是用main方法中的String[] args,因为只有那个args可以操作啊,纠结了半个小时,也查了一些资料,最后还是放弃了,后面又想,既然if是条件判断语句,那应该就是在里面的条件那里做文章(这可是个热词)是否可以在条件里面就把前面if中的输出来,其实这个想法是正确的,但是由于其他的原因,还是没能得出正确的答案,此处略去一些东西,不说大家应该都懂,人艰不拆嘛,(∩_∩),就这样一个小时过去了,这个中午不能就这样费了啊,也没休息,下午的四节课是要跪的节奏啊,有时也是性格原因,要是找不出答案,哥哥下午的课就翘掉算了,既然自己搞不定,有时我们还是要有屈服的心理,放下我们的那一点所谓的臭架子,nin听一下别人的想法,我们又不吃亏,只要事先我们想过了就OK了,这种屈服是智者的屈服,我们的知识也有限,我们不懂可以学学别人嘛,看看别人是怎么做的,自己在这里死磕也没用,还把自己搞的心里烦躁。所以就百度了,开始也找不到,最后还是谷歌给力找到了类似的题目,一看答案真心觉得自己弱爆了,作者给出了六种解决的方法,可我一种方法都没想到,有的挨着边了,但是还是没写出来。

         下面给大家看看这神奇的六种方法。我觉得挺神奇的。

         

     上面的题目原题是这样的

           

问题如下:一个类HelloWorld,如下:
public class HelloWorld { 
  
    public static void main(String... a) { 
  
        if(你的代码) { 
  
            System.out.print("Hello,"); 
  
       } else { 
  
            System.out.println("World"); 
  
        } 
  
    } 
  
}
该类含有main方法,如何执行该main方法,让它打印出Hello,World,前提是只准在if条件里,即在 你的代码 处添加代码。

    经过搜集总结,可实现的方法如下:

  

 

(一)使用匿名内部类:
public class HelloWorld { 
  
    public static void main(String... a) { 
  
       if (new Object(){{System.out.print("Hello,");}} == null) { 
  
           System.out.print("Hello,"); 
  
       } else { 
  
           System.out.println("World"); 
  
       } 
  
    } 
  
}

  (二)利用PrintStreamappendformat等方法(append处改为format

 

 

 

public class HelloWorld { 
  
    public static void main(String... a) { 
  
       if (System.out.append("Hello,") == null) { 
  
           System.out.print("Hello,"); 
  
       } else { 
  
           System.out.println("World"); 
  
       } 
  
    } 
  
}

  ()利用反射调用System.out.print

  

public class HelloWorld { 
  
    public static void main(String... a) throws Exception { 
  
       if (System.out.getClass().getMethod("print",String.class).invoke(System.out, "Hello,")!=null) { 
  
           System.out.print("Hello,"); 
  
       } else { 
  
           System.out.println("World"); 
  
       } 
  
    } 
  
}

  ()利用反射调用main方法本身

  

public classHelloWorld{ 
  
    public static void main(String... a) throws Exception { 
  
       if (a.length == 0 ? HelloWorld.class.getDeclaredMethod("main",a.getClass()).invoke(new Test(), new Object[]{new String[]{"a"}}) != null : true) { 
  
           System.out.print("Hello,"); 
  
       }else { 
  
           System.out.println("World"); 
  
       } 
  
    } 
  
}

  变体

 

public class HelloWorld { 
  
    public static void main(String... a) throws Exception { 
  
       if (a == null ? true : ((HelloWorld.class.getMethod("main", newString[1].getClass()).invoke(new HelloWorld(),new Object[1])) instanceof Void)) { 
  
           System.out.print("Hello,"); 
  
       }else { 
  
           System.out.println("World"); 
  
       } 
  
    } 
  
}

  (五)利用jdk1.6的动态脚本

  

import javax.script.ScriptEngineManager; 
  
public class HelloWorld { 
  
    public static void main(String... a) throws Exception { 
  
       if (new ScriptEngineManager().getEngineByName("JavaScript").eval("print ('Hello,');")!=null) { 
  
           System.out.print("Hello,"); 
  
       } else { 
  
           System.out.println("World"); 
  
       } 
  
    } 
  
}

  (六)利用jdk1.5printf方法

public class HelloWorld { 
  
    public static void main(String... a) throws Exception { 
  
       if (System.out.printf("Hello,") == null) { 
  
           System.out.print("Hello,"); 
  
       } else { 
  
           System.out.println("World"); 
  
       } 
  
    } 
  
}

  看完这六个方法,你想到了几个,有些我们也许真的想不到,我能想到的也就只有第一个那样的形式的了,但是还是没有写出来,自己的基础知识真的太差了,还要加强。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6
2
分享到:
评论
9 楼 八爪鱼腩 2014-04-28  
2楼思想不就是sql注入的思想么。
8 楼 asia007 2014-04-08  
看完后,才发现自己的思维真的被限制住了……
7 楼 MNTMs 2014-04-05  
zhijian 写道
2楼那想法真心碉堡 ,不过我想到的也差不多第一种

只要不被我们原来学的思想束缚住就可以了  
6 楼 MNTMs 2014-04-05  
xiaokek 写道
public static void main(String[] args){  
if(true){System.out.print("我很美!  ");} if(false){  
System.out.print("我很美!  ");  
}else{  
System.out.println("我也很有才!");  
}  }  



这算不算啊

吊咋天,
5 楼 MNTMs 2014-04-05  
ijlkdwg 写道
其实楼猪全部的道理就是一个:
a、if 里面执行一个函数或者说一段代码,在这里打印一个东西
b、函数返回一个值
c、对这个值故意做false比较,以获得else分支。

是的,精辟啊
4 楼 zhijian 2014-04-05  
2楼那想法真心碉堡 ,不过我想到的也差不多第一种
3 楼 ijlkdwg 2014-04-05  
其实楼猪全部的道理就是一个:
a、if 里面执行一个函数或者说一段代码,在这里打印一个东西
b、函数返回一个值
c、对这个值故意做false比较,以获得else分支。
2 楼 xiaokek 2014-04-05  
public static void main(String[] args){  
if(true){System.out.print("我很美!  ");} if(false){  
System.out.print("我很美!  ");  
}else{  
System.out.println("我也很有才!");  
}  }  



这算不算啊
1 楼 white_crucifix 2014-04-05  
…………………………………………

相关推荐

    Python小游戏源码-五子棋之人人对战项目源码

    【五子棋游戏详解】 五子棋是一种古老而流行...对于想提升编程技能和了解游戏开发的初学者来说,这是一个很好的实践项目。在实际操作中,逐步分析和理解每一部分代码,有助于深入理解Python编程和游戏开发的核心概念。

    石头剪刀布小游戏_程序小游戏_

    本篇文章将深入探讨如何利用编程技术实现一个石头剪刀布小游戏,包括人机对战、人人对战以及锦标赛模式。 首先,我们要明确游戏的基本规则:石头胜剪刀,剪刀胜布,布胜石头。这是一个典型的循环相克关系,也是游戏...

    c语言贪吃蛇游戏的双人对战版毕业设计—(包含完整源码可运行).rar

    本文将深入探讨一个基于C语言开发的双人对战版贪吃蛇游戏,旨在帮助读者理解C语言编程的基本原理,以及如何利用它来构建一个具有互动性的游戏。 C语言是一种强大的、低级的编程语言,以其简洁、高效而著称。在...

    c语言地空对战游戏.zip

    在这个项目中,开发者利用C语言的基本语法、控制结构、函数调用等核心概念构建了一个互动的对战环境,让玩家能够体验到简单的飞行战斗乐趣。 C语言是一种静态类型的、编译式的、通用的、大小写敏感的、不仅支持过程...

    swift-swift-chess一个采用Swift2.0开发的简单棋类游戏

    Swift是苹果公司推出的一种强大的、安全的编程语言,主要用于iOS、macOS、watchOS和tvOS等平台的应用程序开发。本项目"swift-chess"是一个使用...对于想要学习Swift编程或游戏开发的人来说,这是一个很好的实践项目。

    C++语言学习利器-AI-CODE坦克机器人_真正完整版!

    【C++语言学习利器-AI-CODE坦克机器人】是一份专为C++初学者和爱好者设计的教程资源,旨在通过构建一个有趣的坦克机器人项目来深入理解和应用C++编程语言。这个真正完整版确保了学习者可以系统地、无遗漏地掌握相关...

    C#wifo斗地主

    通过实际操作,他们可以学习到如何组织代码,如何调试错误,以及如何优化性能,这些都是成为一个优秀程序员必不可少的经验。 总的来说,“C#wifi斗地主”是一个寓教于乐的项目,它不仅提供了娱乐,更是一个绝佳的...

    五子棋源码 C语言课设

    其次,项目的实现会涉及到C语言的基本语法,如变量声明、条件语句(if-else)、循环(for、while)以及函数定义和调用。此外,还可能用到指针,通过指针传递棋盘状态或进行动态内存管理。 再者,用户交互是游戏不可...

    Python库 | py_battleship-1.2.0-py3-none-any.whl

    《Python库py_battleship-1.2.0...对于想要学习游戏开发或者对战舰游戏有兴趣的Python爱好者来说,`py_battleship`是一个不容错过的资源。通过深入研究和实践,开发者不仅可以提升编程技能,还能享受到创造游戏的乐趣。

    俄罗斯方块java源代码

    《俄罗斯方块》是一款经典的电子游戏,自1984年诞生以来,就深受全球玩家喜爱。本项目是使用Java编程语言实现的...总的来说,这是一个很好的学习和实践Java编程技巧的机会,特别是对于想要涉足游戏开发的开发者而言。

    C++源代码的井字游戏.zip

    在编程领域,井字游戏(Tic Tac Toe)是一个经典的两人对战游戏,通常被用作教学示例,帮助初学者理解游戏逻辑和编程技巧。在这个名为"C++源代码的井字游戏.zip"的压缩包中,包含了使用C++语言编写的井字游戏源码,...

    21点游戏源代码及其应用程序(VC6.0)

    同时,游戏内置了一个简单的电脑对战系统,这涉及到计算机算法的设计,可能是通过随机数生成来模拟电脑玩家的决策,以增加游戏的挑战性和趣味性。 “21点.exe”和“21点..exe”这两个文件名中,第二个文件名可能是...

    c语言黑白棋ai游戏源码.zip

    1. **C语言基础**:此游戏源码的编写使用了C语言,因此涉及到C语言的基本语法,如变量定义、控制结构(if-else、switch-case、for、while)、函数定义与调用、数组和指针操作等。 2. **数据结构**:在游戏开发中,...

    制作很漂亮的VB围棋游戏

    【标题】:“制作很漂亮的VB围棋游戏”是一个关于利用Visual Basic(VB)编程语言开发...同时,对于想要深入学习游戏开发的人来说,这是一个很好的起点,因为围棋游戏的逻辑相对复杂,能帮助开发者逐步提升编程能力。

    python实现五子棋人机对战游戏

    这里涉及到一个关键的计算过程——将屏幕坐标转换为棋盘坐标。 ```python def _get_clickpoint(mouse_pos): """将鼠标点击位置转换为棋盘上的坐标""" x, y = mouse_pos grid_size = 40 # 棋盘格子的大小 row = ...

    JAVA飞行棋游戏源码

    飞行棋游戏是一个经典的两人对战游戏,通过掷骰子决定棋子的移动步数,目标是将所有棋子安全地移动到终点。 在Java中开发这样的游戏,你需要掌握以下几个核心概念: 1. **控制台输入输出**:Java中的`System.out....

    c-gomoku-cli

    1. **C++基础**:项目基于C++,因此理解C++的基础语法、变量、数据类型、控制流(如if-else,循环)以及函数是必不可少的。C++的面向过程编程思想在这里得到了体现。 2. **命令行接口**:项目使用命令行接口(CLI)...

    易语言开格五子棋游戏源码-易语言

    总的来说,易语言开格五子棋游戏源码是一个很好的学习资源,它涵盖了编程基础、游戏逻辑、用户界面设计等多个方面,对于想要学习易语言或者游戏开发的人来说,都是一个很好的实践项目。通过分析和修改这个源码,不仅...

    五子棋源码

    五子棋源码是一款基于Java编程语言开发的棋类游戏,它实现了经典的...对于学习Java编程或想要了解游戏开发的人来说,这是一个很好的实践案例。通过阅读和理解源码,可以深入理解Java编程技巧,提升自己的编程能力。

    9格子游戏,基于VB的小游戏代码

    1. **VB基本语法**:变量声明、控制结构(如if-else、for循环)、函数和过程。 2. **图形用户界面(GUI)设计**:使用VB的Form对象创建游戏界面,添加控件如按钮、文本框等,以及设置其属性和事件处理。 3. **事件...

Global site tag (gtag.js) - Google Analytics