2009年12月29日 星期二

21點黑傑克--BlackJack 21

這個是大學時代在初學java時...自己給自己下的功課....拖到現在才快完成....當然經過兩年的工作...還是有不少幫助.....把能物件化的東西都給Object...code看起來就沒那麼複雜了....目前應該也會放到Google Code上去吧...剩下的就是電腦判斷是否要在加點....就完成了

完成請到以下21點黑傑克下載BlackJack.jar

猜數字遊戲--xAyB

最近想了很多....還是稱這段失業期間...好好的練一下程式基礎....花了兩星期去上c...結果還是教最基礎的...原本以為會教到c++結果沒有....不過有一個回家作業就是猜數字...果然用c寫..還是屍體阿....所以想說用較熟悉的Java看會不會順一點....果然還不錯啦....兩天就寫出來...當然不是整整兩天摟....想說沒試過Google Code所以就放上去了...
猜數字遊戲下載guessnum1.0.jar
download那邊有src.....jar檔要從cmd去執行...這應該不用教吧!
在cmd下輸入java -jar 檔名.jar

2009年9月10日 星期四

[Java] String.split()

split()切割字串會用到 return String[]
Example:
String a = "dog&cat";
String name = a.spilt("&")[0];

name的值為dog

如果遇到的是特殊字元如 "?", "*", "+" 會出現"Dangling meta character '?' near index 0" 這種錯誤訊息
解決方法
String a = "dog?cat";
String name = a.spilt("\\?")[0];

參考資料

2009年8月12日 星期三

[Jsp] JSTL計算長度

ArrayList list = new ArrayList();
${fn:length(list)}

fn:length 可以計算長度 相當於Java中的list.size();

[Jsp] JSTL日期表式

大於fmt:formatDate pattern="yyyy/MM/dd HH:mm" value="${date}" /小於

fmt:formate 相當於Java中的 SimpleDateFormate
pattern代表格式化後的表式
value代表要格式話的Object_Date

2009年7月27日 星期一

[Jsp] JSTL取出自定長度字元

${fn:substring(Object_String, 0 ,9)}

fn:substring 取字串中的第X字元到第Y字元 上面為從0開始取到第9個(不包含第9字元)
相當於Java中的 Object_String.substring(X, Y);

2009年7月24日 星期五

[Java] String 取代字元

String_object.replaceAll("123","456").replaceAll("a","b");

在String_object中把"456"取代成"123",可以串聯使用

[Java] Date 日期比較

常常會使用到日期的比較,從db中取出日期,和今天比較,return為boolean

before是指Date_object是否是今天日期之後
Date_object.before(new Date());

after是指Date_object是否是今天日期之前
Date_object.after(new Date());

2009年6月9日 星期二

[Java] Log4j 設定(AP)

在main外面寫以下code

private static Logger logger = Logger.getLogger(Test.class);

在main裡面寫以下code

try{
String a = "12345";
String b = a.substring(10);
}catch (Exception e) {
logger.warn(e.getMessage(), e);
}

建立一個名稱為Log4j.properties檔案
內容如下,放在src下面,log檔會產生在專案下
參數DatePattern為每天獨立log檔


log4j.rootLogger=ALL, N1, N2
#File Log
log4j.appender.N1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.N1.File =logs/log.html
log4j.appender.N1.DatePattern='.'yyyy-MM-dd'.html'
log4j.appender.N1.layout=org.apache.log4j.PatternLayout
log4j.appender.N1.layout.ConversionPattern=[Test]-[%d{yyyy-MM-dd HH:mm:ss}]-[%c]-[%m]%n

# console
log4j.appender.N2=org.apache.log4j.ConsoleAppender
log4j.appender.N2.Target=System.out
log4j.appender.N2.layout=org.apache.log4j.PatternLayout
log4j.appender.N2.layout.ConversionPattern=[Test]-[%d{yyyy-MM-dd HH:mm:ss}]-[%c]-[%m]%n



在web設定上若不知路徑可以先如以下輸出一次,看檔案實際產生在那裡,在改路徑
log4j.appender.N1.File =log.html <====通長輸出在tomcat安裝目錄下

2009年6月6日 星期六

[Java] JSP 一些常用的正規式


驗證Email格式的正規式
email.matches("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"))

只能輸入英文和數字長度30
user_id.matches("[a-z|0-9]{1,30}")

[Java] JSP 正規式取出中文字


import java.util.regex.Matcher;
import java.util.regex.Pattern;

String str="o中文o";
String pattern="";
Pattern p=null;
Matcher m = null;
//中文字碼範圍
pattern="[\u4e00-\u9fa5]";
p=Pattern.compile(pattern);
m=p.matcher(str);
while(m.find()){
System.out.println(m.group());
}


引用http://www.walkone.com.tw/blog/index.jsp?user_id=test&subject_id=5728

[Java] JSP 讀取UTF-8檔案

以下程式不考慮UTF-8 BOM的問題

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
File fn=new File("utf8.txt");

FileInputStream fis = new FileInputStream(fn);
//指定utf-8編碼
BufferedReader br = new BufferedReader( new InputStreamReader( fis,"utf-8" ) );
String file_str_append="";
String file_str="";
while((file_str_append=br.readLine())!=null){
file_str+=file_str_append;
}
br.close();
fis.close();
//將utf-8所有檔案內容輸出
System.out.println(file_str);


引用http://www.walkone.com.tw/blog/index.jsp?user_id=test&subject_id=5726

2009年4月16日 星期四

[Dom4j] 產生xml


Document doc = DocumentHelper.createDocument();
Element root = doc.addElement("Message");
root.addElement("Date").addText("");

int i = 1;
int j = 0;
Set<object> set = null;
for(object p : list){

Element items = root.addElement("item");
items.addAttribute("id", String.valueOf(i));
items.addElement("PID").addText("");
items.addElement("PTitle").addText("");
items.addElement("Depict").addText("");
items.addElement("Type").addText("");
items.addElement("Num").addText("");

set = p.getxxx();
j = 1;
for(object a : set){
Element content = items.addElement("Content");
content.addAttribute("id", String.valueOf(j));
content.addElement("Title").addText("");
content.addElement("Desc").addText("");
j++;
}
i++;
}

System.out.println(doc.asXML());

顯示結果為
<Message>
 <Date> <Item id=1>
  <PID>  <PTitle>  <Depict>  <Type>  <Num>2  <Content id =1>
   <Title>   <Desc>  </Content>
  <Content id =2 >
   <Title>   <Desc>  </Content>
 </Item>
</Message>

2009年2月12日 星期四

[Java] 將陣列轉為ArrayList

String[] phone = {"0", "1", "2"}
ArrayList arrayphone = new ArrayList(Arrays.asList(phone.split(",")));
這樣可以把Array轉為ArrayList

2009年2月10日 星期二

[Java] Hibernate Query用法

Query query = hsession.createQuery("from abc where sn = :sn");
query.setString("sn", sn);

abc abc = (abc)query.uniqueResult();

query.uniqueResult(); 用Hibernate中取得一筆資料,限制是選出的資料只有一筆

2009年1月6日 星期二

[Java] 複製clone()的使用方式

Stack copy = (Stack)list.clone();

參照http://royaltykao.blogspot.com/2008/10/javaclone.html

2009年1月5日 星期一

[Java] NumberFormat 數字格式化

int i=0;
NumberFormat nf=NumberFormat.getInstance();
nf.setMinimumIntegerDigits(3);
for(i=0; i<107; i++){
int j=i;
System.out.println("");

}


NumberFormat formatter = NumberFormat.getInstance();
formatter.setMinimumIntegerDigits(3); 不滿三位數前面補0
formatter.setGroupingUsed(false);
String rnd=formatter.format(int);

2009年1月3日 星期六

[Java] Dom4j 解析xml格式(二)


Element element = (Element) config_xml.selectSingleNode("/root/jack[@sn='"+rand+"']");
if(element != null){
String attribute = element.attributeValue("sn");
String text = element.getText();
}

取xml中屬性的方式,先轉成Element 在判斷是否為空值
<root>
<jack sn="1">AAA</jack>
</root>
上面語法attribute變數的值是取jack中屬性sn的value,text變數的值為AAA