一家三口三个姓氏将出现

本人的姓氏之争已久,自中华人民共和国开国以来,改革开放起,吾之族人被“改姓”。虽有长征功臣于长沙养老,姓本姓也。奈何。。。。

吾穰氏之后,力争本姓,以安吾之心。由此,三口之家三姓氏而生。

好了,前面乱掰了下。回到问题,是大家想问的问题?

第一,我现在的姓氏不是本姓,为后来改的姓。小学到初中 我用过四个姓氏。为什么会这样,主要是因为区域文化啊,虽被改姓,本家读法不变,但外人读音会只读字音,不知原由,所以好多次都说明我姓啥。

第二,第五次人口谱查,我们本姓加现姓有将近2万人(可能还会多,也有改为它姓的),群里人一直要改回原姓氏,湖南方面军(就这样叫嘛)也来到我们村,与我方面军讨论改姓之事宜。最后大家都说要改,其实我早想改了,为什么现在不改呢,一来毕业证上都是那姓,改起来太不方便了。所以下一代改起。。

第三,我家那位一定不会跟我同一个姓氏的。为什么?全国才多少人啊。。非要找个同姓的不可吗??不是不行,也要有吧(有看得上的,有感情的)。

这么一来,孩子一个,老爸一个,他老妈一个。嘿嘿,以后有点玩了。。孩子问题也会很多的,怎么你家三个姓啊,老师问,同学问,问题很多(我从小也是这样的,现在还是这样),做为我家的孩子不容易啊。要问他老妈姓啥,不告诉你们,有也不告诉你,别说没有啦。。打住。。。

图个无聊发发,等等孩子他自己来看,会觉得他老爸太有远见了(我躲,小心被P)。

android 无线点餐系统

这个程序写了快一周了(结算部分没完,因为要离开这里些时间),但真正用了没多少时间,大多时间都在上课,忙别的。每次我想好好写,不是叫我去面试,就是叫我去开会。一个鸟蛋,烦死了。明天准备回学校,回南昌走走,看看。正好好好休息,然后回北京找工作。北京的学习也快要结束了,找工作就要开始。今天去面试,直接就是裸试,人事面完,技术主管面完,最后老总也出来了面了。也许只是一家新开的公司吧,技术说我技术还不错,基础还不是很牢。也许没有准备过面试,正好回去好好把基础看下,准备面试。好了,看我们的系统吧,直接上了。

 

 

 

 

 

 

 

Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f050013}的问题

先来看下这个问题吧

10-29 04:11:46.945: WARN/Resources(541): Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f050013}

查了下英文的资料

- What happened.
EditText converted default value as it would be an numeric, and omits leading zero. If you use a non-numeric value it won't be converted. If you type directly in input field (not default value) then the zero is not lost.
- What you think the correct behavior should be.
textPassword and textVisiblePassword input types must not consider default value as numeric in any conditions. This is probably should apply to numeric input types only.
 

主要问题是,EditText的值被设定为默认只接爱数值,如果是非数值就会出现不能转换

为什么我出现了这样的问题?

是因为我在TextVIEW中的Text属性设置为EditText的ID号,出现转换警告,在这想告诉大家的是要认真设置好XML中的每个属性,更不要同名。

android 会员买卖系统

这是我第一个作品,用了9天时间写完,项目不大,因为没真正好好的去学习android 。所以写起来比较慢,在接下来的学习中,会加快提高我的技术的。

如果大家有什么好东西,需要我用android 完成的,我也会努力去写一个。一来提高技术,二来交下朋友。朋友满天下,才是道理。看下我的东东吧

 

 

Android 中数据库查询方法 query()

在使用android sqlite 的时候  经常对query() 方法不太记得,网上找了些东西

Android 中涉及数据库查询的地方一般都会有一个 query() 方法,而这些 query 中有大都(全部?)会有一个参数 selectionArgs,比如下面这个 android.database.sqlite.SQLiteDatabase.query():

  • public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)  

selection 参数很好理解,就是 SQL 语句中 WHERE 后面的部分,即过滤条件, 比如可以为 id=3 AND name='Kevin Yuan' 表示只返回满足 id 为 3 且 name 为 "Kevin Yuan" 的记录。

    再实际项目中像上面那样简单的“静态”的 selection 并不多见,更多的情况下要在运行时动态生成这个字符串,比如

view plaincopy to clipboardprint?
public doQuery(long id, final String name) {  
  mDb.query("some_table", // table name   
        null, // columns  
        "id=" + id + " AND name='" + name + "'", // selection  
         //...... 更多参数省略  
  );  

public doQuery(long id, final String name) {
  mDb.query("some_table", // table name
        null, // columns
        "id=" + id + " AND name='" + name + "'", // selection
         //...... 更多参数省略
  );
}

在这种情况下就要考虑一个字符转义的问题,比如如果在上面代码中传进来的 name 参数的内容里面有单引号('),就会引发一个 "SQLiteException syntax error .... "。

     手工处理转义的话,也不麻烦,就是 String.replace() 调用而已。但是 Android SDK 为我们准备了 selectionArgs 来专门处理这种问题:

view plaincopy to clipboardprint?
public void doQuery(long id, final String name) {  
  mDb.query("some_table", // table name   
        null, // columns  
        "id=" + id + " AND name=?", // selection  
        new String[] {name}, //selectionArgs  
         //...... 更多参数省略  
  );  
  // ...... 更多代码  

public void doQuery(long id, final String name) {
  mDb.query("some_table", // table name
        null, // columns
        "id=" + id + " AND name=?", // selection
        new String[] {name}, //selectionArgs
         //...... 更多参数省略
  );
  // ...... 更多代码
}

也就是说我们在 selection 中需要嵌入字符串的地方用 ? 代替,然后在 selectionArgs 中依次提供各个用于替换的值就可以了。在 query() 执行时会对 selectionArgs 中的字符串正确转义并替换到对应的 ? 处以构成完整的 selection 字符串。 有点像 String.format()。

    不过需要注意的是 ? 并不是“万金油”,只能用在原本应该是字符串出现的地方。比如下面的用法是错误的:

view plaincopy to clipboardprint?
public void doQuery(long id, final String name) {  
  mDb.query("some_table", // table name   
        null, // columns  
        "? = " + id + " AND name=?", // selection XXXX 错误!? 不能用来替换字段名  
        new String[]{"id", name}, //selectionArgs  
      //...... 更多参数省略  
  );  
  // ...... 更多代码  

andorid column ‘_id’ does not exist错误的解决

这个问题搞了我晚上好几个小时,最后查了下网上,才找到问题。

关于这一部分,必须注意sqlite的主键命名,由于simpleCursorAdapter的方法只识别_id,所以,当你用到sqlite的simpleCursorAdapter时,必须把数据表的主键命名为_id。否则就会出现java.lang.IllegalArgumentException: column '_id' does not exist错误。

android 学习笔记

android模拟器(simulator)把它自己作为了localhost,也就是说,代码中使用localhost或者127.0.0.1来访问,都是访问模拟器自己!这是不行的!

如果你想在模拟器simulator上面访问你的电脑,那么就使用android内置的IP 10.0.2.2 吧,  10.0.2.2 是模拟器设置的特定ip,是你的电脑的别名alias

记住,在模拟器上用10.0.2.2访问你的电脑本机

 

android http post  实现

 

  public void onClick(View v) {
    dopost(txt.getText().toString());
    
   }
  });
    }

 private void dopost(String val){
     //封装数据
     Map<String, String> parmas = new HashMap<String, String>();
     parmas.put("name", val);
    
     DefaultHttpClient client = new DefaultHttpClient();//http客户端
     HttpPost httpPost = new HttpPost("http://mhycoe.com/test/post.php");
    
     ArrayList<BasicNameValuePair> pairs = new ArrayList<BasicNameValuePair>();
     if(parmas != null){
         Set<String> keys = parmas.keySet();
         for(Iterator<String> i = keys.iterator(); i.hasNext();) {
              String key = (String)i.next();
              pairs.add(new BasicNameValuePair(key, parmas.get(key)));
         }
    }
    
  try {
   UrlEncodedFormEntity p_entity = new UrlEncodedFormEntity(pairs, "utf-8");
         /*
          *  将POST数据放入HTTP请求
          */
         httpPost.setEntity(p_entity);
         /*
          *  发出实际的HTTP POST请求
           */
         HttpResponse response = client.execute(httpPost);
         HttpEntity entity = response.getEntity();
         InputStream content = entity.getContent();
   String returnConnection = convertStreamToString(content);
         show.setText(returnConnection);
  } catch (IllegalStateException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
    
 }

  private String convertStreamToString(InputStream is) {
   BufferedReader reader = new BufferedReader(new InputStreamReader(is));
         StringBuilder sb = new StringBuilder();
         String line = null;
         try {
              while ((line = reader.readLine()) != null) {
                   sb.append(line);
              }
         } catch (IOException e) {
              e.printStackTrace();
         } finally {
              try {
                   is.close();
              } catch (IOException e) {
                   e.printStackTrace();
              }
         }
         return sb.toString();
 }
}

回家迷途

又一次出远门,这次走的方向走反了,走北方去了。所以特别想家,9月29号晚坐上回南昌的火车,从北京返家。经过12个小时不合眼的火车硬座,差点肛裂了。。下次一定给我买张卧的,再送她一张。也许这也只能想想啦,我还是一直这么穷。。北漂的生活虽说已经剥落了我梦的外皮,但现实已经入我骨了。下火车之后就票也没买到,看到回家无望了,只好去学校走走,在学校的好好走了好多次。看到了好些同学,他们考公务员的考公务员的,考研的考研;像我这样子的都一起出去实习了。每一个同学都说要请我吃饭,都说好久没见了。中午我请他们一起吃了个饭。下午在床上 几秒钟就睡着了,这次是很快睡着了,一次深度睡眠。好久没睡个好觉了,很幸福的睡觉是我现在的梦想。晚上寝友请我吃饭,吃完后我一个人在学校里面自己走走,接着走第5圈。在路上又遇上了好几个同学,陪他们聊天,之后他们请我吃饭了,完他们又陪我走走,之后又撞上同学,他们又请我吃饭。然后就聊了聊他们在公司的故事,蛮好玩的。吃的差不多,又走了走,之后又撞到同学了,这次考研的看书回来,就一次聊着回寝室了。

寝室没床,就去同学那睡了,几天没睡好,拿着书睡着了,这次真是睡的很好。接第二天就没怎么爽,火车站不让进,我没票,人很多。打电话都不通,差点都要走丢,其实我们都找不到对方了。后来没办法,等等了好久发短信才找到对方的。去拦汽车也没拦到,为了1号能到安福,所以我晚上也去拦汽车回家,最后被我拦到了。晚10点半到安福,哈哈。。。回家真好。。。虽然一路杯具着。。

 

 

JAVA 数字转人民币大写

在写这个之前,老师出的,把阿拉伯数字转化为人民币大写

因为想的跟老师不一样,被老师BS了下,回到住处就把这个写出来

如果有问题,请提出

package com.joyleft.client;

public class MoneyUtil {
 
 private static final String[] NUMBERS={ "","壹", "贰", "叁", "肆", "伍", "陆",
       "柒", "捌", "玖" };
 private static final String[]  IUNIT = { "元", "拾", "佰", "仟", "万", "拾", "佰",
       "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟" };

 private static final String[] DUNIT = { "角", "分" };
 private static final String TOTAL="整";
 
 /**
  * 转成数组
  * @param number
  */
 public int[] toArray(String number){
  
  char[]cn=number.toCharArray();
  int []num=new int[cn.length];
  for(int i=0;i<cn.length;i++)
  {
   num[i]=Integer.parseInt(String.valueOf(cn[i]));
  }
  return num;
 }
 
 public void toChinese(String number){
  String strInt="";
  String strFloat="";
  String StrNum="";
  if(number.indexOf(",")>0)
   number=number.replace(",", "");
   
  if(number.indexOf(".")>0){//是否有小数点
   strInt=number.substring(0,number.indexOf("."));
  
   strFloat=number.substring(number.indexOf(".")+1);
   
   strFloat=round(strFloat);
   
   if("100".equals(strFloat)){//四舍五入后小数位没有了
    StrNum=this.handleInteger(strInt,true);
    strFloat="";
   }else{
    StrNum=this.handleInteger(strInt,false)+handleDecimal(strFloat);
   }
   
  }else{
   System.out.println(number);
  }
  System.out.println(StrNum);
 }
 /**
  * 整数部分处理
  * @param number
  */
 public String handleInteger(String number,boolean b){
  String strNum="人民币:";
  int[] num=null;
  if("0".equals(number)){
   return strNum+"";
  }
  num=toArray(number);

  for(int i=0;i<num.length;i++){
   if(b&&i==num.length-1){
    num[i]=num[i]+1;
    
   }
   if(num[i]!=0){
    strNum=strNum+NUMBERS[num[i]]+IUNIT[num.length-i-1];
    
    }else{
      if(num.length-i==13)//万亿位为零 加万字
       strNum=strNum+NUMBERS[num[i]]+IUNIT[num.length-i-1];
      else if(num.length-i==9)//亿位为零 加亿字
       strNum=strNum+NUMBERS[num[i]]+IUNIT[num.length-i-1];
      else if(num.length-i==5)//万位为零 加万字
       strNum=strNum+NUMBERS[num[i]]+IUNIT[num.length-i-1];
      else if(num.length-i==1)
       strNum=strNum+NUMBERS[num[i]]+IUNIT[num.length-i-1]+TOTAL;
    }
   }
  return strNum;
 }
 /**
  * 小数部分处理
  * @param number
  */
 public String handleDecimal(String number){
  String strNum="";
  
  int[] num=toArray(number);

  for(int i=0;i<num.length;i++){
   
   if(num[i]!=0)
    strNum=strNum+NUMBERS[num[i]]+DUNIT[i];
   else
    strNum=strNum+NUMBERS[num[i]]+TOTAL;
  }
  return strNum;
 }
 /**
  * 四舍五入  保留两位
  * @param num
  */
 public String round(String number){
  String strNum="0."+number;
  float num=Float.parseFloat(strNum);
  int reNum=(int)num*1000%10;//取得千分位
  int intNum=0;
  
  if(reNum>=5){
   num=(num*100+1);
   intNum=(int)num;
  }else{
   
   intNum=(int)(num*100);
  }
  
  strNum=String.valueOf(intNum);
  if(strNum.length()==1)
   strNum="0"+strNum;
  return strNum;
 }
 /**
  * @param args
  */
 public static void main(String[] args) {
  new MoneyUtil().toChinese("3453845546430.200");
  new MoneyUtil().toChinese("0.99");
 
 }

}
结果

人民币:叁万肆仟伍佰叁拾捌亿肆仟伍佰伍拾肆万陆仟肆佰叁拾元整贰角整
人民币:玖角玖分
 

JAVA面试编程题

有4个彩色的立方体。立方体的6个面,每面都涂上了1种颜色。一共有4种颜色,蓝色(B),红色(R),绿色(G)和黄色(Y)。立方体的6个面称为前(front)、后(back)、左(left)、右(right)、上(top)、下(bottom)。

这4个立方体的颜色排列为:

编号    front    back     left     right    top     bottom

1       R      B        G      Y       B       Y

2       R      G        G      Y       B       B

3       Y      B        R      G       Y       R

4       Y      G        B      R       R       R

请将这4个立方体重叠摆放成为一个立柱,这个立柱有4个侧面,要求每个侧面都有4种颜色。

 

代码:

package com.joyleft.client;

public class ShowColor {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[][] color={
                {"R","B","G","Y","B","Y"},
                {"R","G","G","Y","B","B"},
                {"Y","B","R","G","Y","R"},
                {"Y","G","B","R","R","R"},
        };
        int count=0;
        int AllCount=0;
        for (int i = 0; i < color[0].length; i++) {
            for (int j = 0; j < color[1].length; j++) {
                for (int j2 = 0; j2 < color[2].length; j2++) {
                    for (int k = 0; k < color[3].length; k++) {
                        if(!color[0][i].equals(color[1][j])&&!color[0][i].equals(color[2][j2])&&!color[0][i].equals(color[3][k])){
                            if(!color[1][j].equals(color[2][j2])&&!color[1][j].equals(color[3][k])){
                                if(!color[2][j2].equals(color[3][k])){
                                    System.out.println(count+1+":"+color[0][i]+" "+color[1][j]+" "+color[2][j2]+" "+color[3][k]);
                                    count++;
                                }
                            }
                        }       
                        AllCount++;
                    }
                }
            }
        }
    System.out.println("一共有"+count+"种方法");   
    System.out.println("一共执行了"+AllCount+"步");
    }

}

结果

一共有130种方法
一共执行了1296步

1:R G Y B
2:R G B Y
3:R G Y B
4:R G Y B
5:R G B Y
6:R G Y B
7:R Y B G
8:R Y G B
9:R B Y G
10:R B G Y
11:R B Y G
12:R B Y G
13:R B G Y
14:R B Y G
15:B R Y G
16:B R G Y
17:B R Y G
18:B G Y R
19:B G Y R
20:B G Y R
21:B G R Y
22:B G Y R
23:B G Y R
24:B G Y R
25:B G R Y
26:B G Y R
27:B G Y R
28:B G Y R
29:B G R Y
30:B G Y R
31:B G Y R
32:B G Y R
33:B G R Y
34:B Y R G
35:B Y G R
36:B Y G R
37:B Y G R
38:B Y R G
39:G R Y B
40:G R B Y
41:G R Y B
42:G Y B R
43:G Y B R
44:G Y B R
45:G Y R B
46:G Y R B
47:G B Y R
48:G B Y R
49:G B Y R
50:G B R Y
51:G B Y R
52:G B Y R
53:G B Y R
54:G B R Y
55:G B Y R
56:G B Y R
57:G B Y R
58:G B R Y
59:G B Y R
60:G B Y R
61:G B Y R
62:G B R Y
63:Y R B G
64:Y R G B
65:Y G B R
66:Y G B R
67:Y G B R
68:Y G R B
69:Y G R B
70:Y G B R
71:Y G B R
72:Y G B R
73:Y G R B
74:Y G R B
75:Y B R G
76:Y B G R
77:Y B G R
78:Y B G R
79:Y B R G
80:Y B R G
81:Y B G R
82:Y B G R
83:Y B G R
84:Y B R G
85:B R Y G
86:B R G Y
87:B R Y G
88:B G Y R
89:B G Y R
90:B G Y R
91:B G R Y
92:B G Y R
93:B G Y R
94:B G Y R
95:B G R Y
96:B G Y R
97:B G Y R
98:B G Y R
99:B G R Y
100:B G Y R
101:B G Y R
102:B G Y R
103:B G R Y
104:B Y R G
105:B Y G
R
106:B Y G R
107:B Y G R
108:B Y R G
109:Y R B G
110:Y R G B
111:Y G B R
112:Y G B R
113:Y G B R
114:Y G R B
115:Y G R B
116:Y G B R
117:Y G B R
118:Y G B R
119:Y G R B
120:Y G R B
121:Y B R G
122:Y B G R
123:Y B G R
124:Y B G R
125:Y B R G
126:Y B R G
127:Y B G R
128:Y B G R
129:Y B G R
130:Y B R G

如果不对 请提醒下我,谢谢