`

Java趣味短码

    博客分类:
  • Java
阅读更多

原文:http://www.ituring.com.cn/article/27186#jtss-tqq

 

今天跟公司的童鞋聊天的时候,谈到了关于短码和代码的精简的方式,所以整理出来。

需求很简单。

首先定义一个类

classItem{publicint key;publicint l;publicint r;};

然后主函数的场景大概是这样

publicstaticvoid main(String[] args){Item x;
    x =newItem();
    x.key =1;
    x.l =10;
    x.r =20;int i =0;if(x.key > i){
        i = x.l;}else{
        i = x.r;}

    i =0if( x.key > i){
        x.l = i;}else{
        x.r = i;}}

这里面有两个子场景,就是接下来要讨论的。

子场景1

if(x.key > i){
        i = x.l;}else{
        i = x.r;}

子场景2

if( x.key > i){
        x.l = i;}else{
        x.r = i;}
  • 子场景1 的规律是 左面的值都是一样的,都是赋值给i

  • 子场景2 的规律是 右面的值都是一样的,都是用i赋给别的变量。

那么我们如何来简化实现这两类场景呢?

第一个场景很简单,可以如下优化:

i =( x.key >i ? x.l : x.r);

第二个场景比较棘手!

因为表达式不能被赋值。

那么我们需要一个传值函数。

publicstatic<T>boolean to_(T s , T d){if(  s.getClass()!= d.getClass()){returnfalse;}
    d = s;returntrue;}

有了如上函数我们就可以这样写

boolean r =( x.key >i ? to_(i,x.l): to_(i,x.r));

r是一个结果值用来检测类型是否正确。

如下是完整的代码。

package tPackge;classItem{publicint key;publicint l;publicint r;};publicclass test01 {publicstatic<T>boolean to_(T s , T d){if(  s.getClass()!= d.getClass()){returnfalse;}
        d = s;returntrue;}/**
     * @param args
     */publicstaticvoid main(String[] args){Item x;
        x =newItem();
        x.key =1;
        x.l =10;
        x.r =20;int i =0;if(x.key > i){
            i = x.l;}else{
            i = x.r;}System.out.println(x.l);System.out.println(x.r);System.out.println(i);System.out.println("--------------------------");       
        i =( x.key >i ? x.l : x.r);System.out.println(x.l);System.out.println(x.r);System.out.println(i);/*
        if ( x.key > i){
            x.l = i;
        }else{
            x.r = i;
        }
        */System.out.println("--------------------------");
        i =0;//if ( x.key > i ) { x.l = i; } else { x.r = i; } System.out.println(x.l);System.out.println(x.r);if(( x.key >i ? to_(i,x.l): to_(i,x.r))){System.out.println(i);}}}


分享到:
评论

相关推荐

    JAVA趣味编程100实例

    在标题“JAVA趣味编程100实例”下,描述中提到“很实用的java趣味编程小程序”,这说明本文件旨在通过有趣的编程实例来帮助学习者加深对Java语言的理解和应用能力。通过解决实际问题来提高编程技能,这些实例很可能...

    DES密码算法使用Java实现

    在Java中实现DES算法,我们需要使用`javax.crypto`包中的相关类。首先,我们需要创建一个密钥,这通常通过`KeyGenerator`类完成。DES的密钥生成器需要指定为`DESKeySpec`,然后使用`KeyGenerator.getInstance("DES")...

    个性二维码制作工具 1.0

    二维码(Quick Response Code)是二维条形码的一种,最初由日本Denso Wave公司于1994年开发,它将大量的数据编码在小块的图形中,可以通过手机等设备快速扫描读取。个性二维码制作工具 1.0 利用了这一技术,让用户...

    enigma:一个使用ROT13密码和摩尔斯电码解密和加密文件的简单程序

    每个字符由一组点(短信号)和划(长信号)组成,如字母"A"用"."和"- "表示,即".-"。摩尔斯电码的使用需要对编码表有一定的熟悉,但在无线通信和紧急求救信号中仍占有一定地位。 "谜"程序将这两种编码方式结合在...

    软件工程开题报告1.01

    九宫格日记将一天的事件划分为九个主题,使用户能在短时间内总结并记录自己的日常。 **项目详情** 在第一阶段,项目主要功能包括用户注册、登录、修改个人信息,创建、编辑和删除九宫格日记,并支持在日记中插入...

    空中网彩铃业务商业计划书.doc

    公司定位为Total Platform Service Provider (TPSP),专注于2.5G和3G平台,如彩信(MMS)、WAP、JAVA等产品和服务。凭借其在WAP业务和彩信业务中的领先地位,空中网已经成为中国移动增值业务领域的领头羊。截至当时...

    全新三天情侣系统附带详细搭建教程,小白也能轻松上手【详细教程+源码】.txt

    此系统旨在通过一系列趣味性的活动与挑战,帮助参与者在限定的时间内(如三天)加深对彼此的了解,从而促进感情的发展。该系统的独特之处在于它不仅适用于现实中的情侣,也适合于网络社交平台上的朋友,甚至是陌生人...

    超级记忆法(编码才是硬道理)

    - **C++、Java、SQL**:这些编程语言中有大量的语法和函数需要记忆,通过超级记忆法可以帮助程序员更快地掌握和运用。 **2. 程序逻辑的理解** - **算法与数据结构**:理解复杂的算法逻辑和数据结构布局,对于编程...

    开题报告 多彩吉安红色旅游网站的设计与实现(1).doc

    - **吉安地区资源**:吉安拥有丰富的红色旅游资源,但由于景点分布广泛,游客难以在短时间内逐一游览。建设多彩吉安红色旅游网站能够有效解决这一问题。 #### 二、多彩吉安红色旅游网站的设计目标与功能 - **设计...

Global site tag (gtag.js) - Google Analytics