原文: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 =0;if( 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例.pdf
本书讲解了100个各种类型的Java编程趣味题的求解过程,旨在帮助读者培养编程兴趣,拓宽Java编程思维,提高Java编程能力,掌握用程序设计解决实际问题的方法与技巧。本书取材注重趣味性与实用性,内容涵盖了Java编程...
很实用的java趣味编程小程序,练练手吧,可以加强自己编程能力
Java趣味编程100例.docx
包含java趣味编程100例书中的源文件,方便java初学者对java小算法的运用
java趣味编程.pdf
JAVA趣味编程100实例.pdf
很经典的入门,学习java快速入门
java 对接扫码枪 工具类
刚从C转来,新接触Java,努力入门中…… 正好看到CSDN论坛 (地址:http://topic.csdn.net/u/20070514/12/45df0d84-e6f8-4cb4-b9ee-c5101e12c7d6.html) 上有个帖子出了一些小的Java编程题,就拿来练练手了。 ...
java趣味编程实例.pdf
内含有java的编程源文件,供又需要的朋友下载
java实现条形码二维码生成含文字标签信息
第1章 变幻多姿的图表 2 1.1 金字塔图案 2 1.2 九九乘法表 4 1.3 余 弦 曲 线 6 1.4 奥运五环旗 11 1.5 杨 辉 三 角 13 1.6 国际象棋棋盘 17 1.7 心 形 图 20
目前比较通用的用Java实现条形码打印的集成插件主要有:barbecue和barcode4j. 但是用barbecue,条形码可以显示出来,可是下面对应数字却不能显示出来,当然可以自己手动加上去,不过那就不是一张图片里面的了,并且...
由程序入门,由浅入深,快速掌握java的精髓!
java趣味算法
这是一群有趣的Java团队,Persist 趣味Java电子期刊为学习Java的亲们解乏,那些在贴吧上留下Email的亲们,来这里下载吧。。。
超级简单的Java邀请码生成器,输入一个数值类型生成一个6位的0-Z的邀请码,并且邀请码可以反向解析成数值! 非常好用,生成和反向生成的方法已经封装好了 超级简单
Java趣味程序(二)