锁定老帖子 主题:让人头疼的新手
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-13
我也马上成为应届生了,翻了翻一年前写的代码,的确很恶心,看来需要好好闭关恶补一下。
/** * 获得所有的资源类型 * @return 所有的资源类型数组*/ public String[] getAllResourceType() { String[] resourceTypeArray = null; if (resourceDaoMap != null && !resourceDaoMap.isEmpty()) { Set set = resourceDaoMap.keySet(); int counter = 0; resourceTypeArray = new String[resourceDaoMap.size()]; Iterator it = set.iterator(); while (it.hasNext()) { resourceTypeArray[counter] = (String) it.next(); counter++; } } return resourceTypeArray; } |
|
返回顶楼 | |
发表时间:2008-05-13
resourceDaoMap.keySet().toArray()
|
|
返回顶楼 | |
发表时间:2008-05-13
你们想干啥 整天应届 应届
|
|
返回顶楼 | |
发表时间:2008-05-13
楼主如果你写那些代码你怎么写呢?
|
|
返回顶楼 | |
发表时间:2008-05-13
String sql = "";
if (sql != null) 哈哈哈哈哈..... 我也07年7月份毕业,工作也就3个月,但也不至于这么糊涂.另外,小晒一下刚写完代码. public Map<Integer, String> getFields(String message) throws UnsupportedEncodingException { // TODO Auto-generated method stub BitSet bitMap=new BitSet(); boolean isExtend=false; Map<Integer,String> fields=new HashMap<Integer,String>();//用来存放报文标识类型(key=0),位图(key=1),2-128个域(key=2--key=128) byte[] all = message.getBytes("ISO-8859-1");//把字符串转成byte[] byte[] messageType=new byte[4];//存放报文类型标识符的byte[] for(int i=0;i<4;i++){ messageType[i]=all[i]; } fields.put(0, new String(messageType,"ISO-8859-1"));//放入Map<Integer,String> fields if(all[4]<0){//如果有扩展位图 isExtend=true; } //初始化基本位图,根据检索基本位图的8个字节的二进制的结果(第4-11字节),把bitMap的32位到95位设置成true(1)或者false(0), int count=4; while(count<12&&count>3){ byte each=all[count]; count++; for(int i=0;i<8;i++){ if(getValue(each,i)){//如果返回true,即二进制上是1,把该bit位设置成true,默认为false bitMap.set((count-1)*8+i,true); } } } //如果有扩展位图,初始化扩展位图,根据检索扩展位图的8个字节的二进制的结果(第12-19字节),bitMap的96-153,设置成true(1)或者false(0) if(isExtend){ while(count>11&&count<20){ byte each=all[count]; count++; for(int i=0;i<8;i++){ if(getValue(each,i)){ bitMap.set((count-1)*8+i,true);//如果返回true,即二进制上是1,把该bit位设置成true,默认为false } } } } /*测试位图 for(int z=32;z<bitMap.size();z++){ if(bitMap.get(z)){ System.out.println(z); } }*/ System.out.println("位图初始化完成"); //初始化位图完成,开始读取数据,i=1表示从bitMap的第2个位置开始循环读取。 if(isExtend){ int currentByte=20; for(int i=32;i<161;i++){ currentByte=putFields(fields,currentByte,bitMap,i,all); fields.put(1, "1"); } }else{ int currentByte=12; for(int i=32;i<161;i++){ currentByte=putFields(fields,currentByte,bitMap,i,all); fields.put(1, "0"); } } return fields; } //检索一个byte二进制中对应位置上的值的方法,返回false表示"0",true表示"1"; 参数int index取0-7,a取[-128到127] public boolean getValue(byte a,int index){ //把一个byte转换成类似"01000000"的形式,并用一个String的值表示 String a_binary; if(a>-1&&a<128){ int i=a|256; String is=Integer.toString(i, 2); a_binary=is.substring(1, 9); }else{ int i=(-a)|256; String is=Integer.toString(i, 2); a_binary="1"+is.substring(2, 9); } if(a_binary.substring(index,index+1).equals("0")){ return false; }else{ return true; } } |
|
返回顶楼 | |
发表时间:2008-05-13
mylifestyle1225 写道 String sql = "";
if (sql != null) 哈哈哈哈哈..... 我工作没一年,也就3个月,但也不至于这么糊涂. 不指出来的话。。。。 |
|
返回顶楼 | |
发表时间:2008-05-13
我只想说一句,每个人都是从不会到会的过程,拿别人的代码来供大家鄙视,有意义么?
象是一个大人看着一个小孩走路摔了一跤,就笑之傻,不想想当初自己的成长的过程,ls的同志们那个不是这样过来的 |
|
返回顶楼 | |
发表时间:2008-05-13
代码1问题多多
/** * 查询方案金额总和 * * @param lottype * Long * @return double */ public Double getsummation(Long lottype) { //1、既然是算钱,就应该用BigDecimal //2、sum和ls变量不需要这么早声明 double sum = 0.00; List ls = null; String sql = ""; //3、这个条件是无效(永真)的 if (sql != null) { //4、既然lottype的类型是Long,那么在SQL语句中作为参数的时候,就不应该括上单引号 sql = " select sum(amount) from OccurProj a where a.lottype = '" + lottype + "' "; } ls = find(sql); //5、基于这个判断,内层的循环处理永远不会被执行 //况且,就实际执行的SQL语句来讲,最多只可能有一条结果,不需要循环处理 if (ls != null && ls.isEmpty()) { for (int i = 0; i < ls.size(); i++) { OccurProj occurproj = (OccurProj) ls.get(i); sum = sum + occurproj.getAmount(); } } return sum; } 在给一个改过的版本作为参照 private static BigDecimal BIGDECIMAL_ZERO = new BigDecimal("0"); /** * 查询方案金额总和 * * @param lottype * Long * @return BigDecimal */ public BigDecimal getsummation(Long lottype) { if (lottype == null ){ return BIGDECIMAL_ZERO; } String sql = sql = " select sum(amount) from OccurProj a where a.lottype = " + lottype; List ls = find(sql); if (ls == null && ls.size() == 0) { return BIGDECIMAL_ZERO; } OccurProj occurproj = (OccurProj) ls.get(0); return occurproj.getAmount(); } |
|
返回顶楼 | |
发表时间:2008-05-13
别总说应届生不好,或者态度问题,自己招人不慎哈.
五一放假四天,我三天在代码里. |
|
返回顶楼 | |
发表时间:2008-05-13
mylifestyle1225 写道 String sql = "";
if (sql != null) 哈哈哈哈哈..... 我也07年7月份毕业,工作也就3个月,但也不至于这么糊涂.另外,小晒一下刚写完代码. public Map<Integer, String> getFields(String message) throws UnsupportedEncodingException { // TODO Auto-generated method stub BitSet bitMap=new BitSet(); boolean isExtend=false; Map<Integer,String> fields=new HashMap<Integer,String>();//用来存放报文标识类型(key=0),位图(key=1),2-128个域(key=2--key=128) byte[] all = message.getBytes("ISO-8859-1");//把字符串转成byte[] byte[] messageType=new byte[4];//存放报文类型标识符的byte[] for(int i=0;i<4;i++){ messageType[i]=all[i]; } fields.put(0, new String(messageType,"ISO-8859-1"));//放入Map<Integer,String> fields if(all[4]<0){//如果有扩展位图 isExtend=true; } //初始化基本位图,根据检索基本位图的8个字节的二进制的结果(第4-11字节),把bitMap的32位到95位设置成true(1)或者false(0), int count=4; while(count<12&&count>3){ byte each=all[count]; count++; for(int i=0;i<8;i++){ if(getValue(each,i)){//如果返回true,即二进制上是1,把该bit位设置成true,默认为false bitMap.set((count-1)*8+i,true); } } } //如果有扩展位图,初始化扩展位图,根据检索扩展位图的8个字节的二进制的结果(第12-19字节),bitMap的96-153,设置成true(1)或者false(0) if(isExtend){ while(count>11&&count<20){ byte each=all[count]; count++; for(int i=0;i<8;i++){ if(getValue(each,i)){ bitMap.set((count-1)*8+i,true);//如果返回true,即二进制上是1,把该bit位设置成true,默认为false } } } } /*测试位图 for(int z=32;z<bitMap.size();z++){ if(bitMap.get(z)){ System.out.println(z); } }*/ System.out.println("位图初始化完成"); //初始化位图完成,开始读取数据,i=1表示从bitMap的第2个位置开始循环读取。 if(isExtend){ int currentByte=20; for(int i=32;i<161;i++){ currentByte=putFields(fields,currentByte,bitMap,i,all); fields.put(1, "1"); } }else{ int currentByte=12; for(int i=32;i<161;i++){ currentByte=putFields(fields,currentByte,bitMap,i,all); fields.put(1, "0"); } } return fields; } //检索一个byte二进制中对应位置上的值的方法,返回false表示"0",true表示"1"; 参数int index取0-7,a取[-128到127] public boolean getValue(byte a,int index){ //把一个byte转换成类似"01000000"的形式,并用一个String的值表示 String a_binary; if(a>-1&&a<128){ int i=a|256; String is=Integer.toString(i, 2); a_binary=is.substring(1, 9); }else{ int i=(-a)|256; String is=Integer.toString(i, 2); a_binary="1"+is.substring(2, 9); } if(a_binary.substring(index,index+1).equals("0")){ return false; }else{ return true; } } 这份代码也拿出来show?呵呵 |
|
返回顶楼 | |