java一些常用代码的分享

java访问xml文件
Java code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import  java.io.*;
import  javax.xml.parsers.DocumentBuilder;
import  javax.xml.parsers.DocumentBuilderFactory;
import  org.w3c.dom.Document;
import  org.w3c.dom.Element;
import  org.w3c.dom.Node;
import  org.w3c.dom.NodeList;
 
public  class  xmljava
 
public  static  void  main(String args[])
     {    
           Element element= null ;
           File f = new  File( "a.xml" );
           DocumentBuilder db= null ;         //documentBuilder为抽象不能直接实例化(将XML文件转换为DOM文件)
           DocumentBuilderFactory dbf= null
       try {
          
           dbf= DocumentBuilderFactory.newInstance();  //返回documentBuilderFactory对象   
           db =dbf.newDocumentBuilder(); //返回db对象用documentBuilderFatory对象获得返回documentBuildr对象
 
           Document dt= db.parse(f);  //得到一个DOM并返回给document对象
           element = dt.getDocumentElement(); //得到一个elment根元素
           
           System.out.println( "根元素:" +element.getNodeName());  //获得根节点
 
         NodeList childNodes =element.getChildNodes() ;     // 获得根元素下的子节点
     
       for  ( int  i =  0 ; i < childNodes.getLength(); i++)      // 遍历这些子节点
 
    {       
        Node node1 = childNodes.item(i);  // childNodes.item(i); 获得每个对应位置i的结点
 
      if  ( "Account" .equals(node1.getNodeName())) 
      
                         // 如果节点的名称为"Account",则输出Account元素属性type
       System.out.println( "\r\n找到一篇账号. 所属区域: "    + node1.getAttributes().getNamedItem        ( "type" ).getNodeValue() +  ". " );
       NodeList nodeDetail = node1.getChildNodes();    // 获得<Accounts>下的节点
       for  ( int  j =  0 ; j < nodeDetail.getLength(); j++)
        {    // 遍历<Accounts>下的节点
           Node detail = nodeDetail.item(j);     // 获得<Accounts>元素每一个节点
             if  ( "code" .equals(detail.getNodeName()))    // 输出code
             System.out.println( "卡号: "  + detail.getTextContent());
              else  if  ( "pass" .equals(detail.getNodeName()))  // 输出pass
                 System.out.println( "密码: "  + detail.getTextContent());
              else  if  ( "name" .equals(detail.getNodeName()))  // 输出name
                 System.out.println( "姓名: "  + detail.getTextContent());
              else  if  ( "money" .equals(detail.getNodeName()))  // 输出money
                  System.out.println( "余额: " + detail.getTextContent());
       
         }
       }
 
     }
}
 
catch (Exception e){System.out.println(e);}
     
}
}
XML/HTML code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<? xml  version = "1.0"  encoding = "gbk" ?>      
< Accounts >
< Account  type = "by0003"
< code >100001</ code >
< pass >123</ pass >
< name >李四</ name
< money >1000000.00</ money
</ Account
< Account  type = "hz0001"
< code >100002</ code >
< pass >123</ pass >
< name >张三</ name
< money >1000.00</ money
</ Account
</ Accounts >
java   jdbc数据库连接
Java code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import  java.io.InputStream;
import  java.sql.Connection;
import  java.sql.DriverManager;
import  java.sql.ResultSet;
import  java.sql.SQLException;
import  java.sql.Statement;
import  java.util.Properties;
 
 
public  class  JDBConnection {
     public  Connection conn =  null // 声明Connection对象的实例
     public  Statement stmt =  null // 声明Statement对象的实例
     public  ResultSet rs =  null // 声明ResultSet对象的实例
     
     private  static  String dbClassName =  "com.microsoft.jdbc.sqlserver.SQLServerDriver" ; //定义保存数据库驱动的变量
     private  static  String dbUrl =  "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DB_ATM" ;
     private  static  String dbUser =  "sa" ;
     private  static  String dbPwd =  "sa" ;
 
     public  JDBConnection(String propertyFileName) { // 带属性文件名的构造方法
         Properties prop =  new  Properties(); // 属性集合对象
         InputStream is =  null ;
         try  {
             is = JDBConnection. class .getClassLoader().getResourceAsStream(
                     propertyFileName); // 属性文件输入流
             // is = new FileInputStream("src/" + propertyFileName);
             prop.load(is); // 将属性文件流装载到Properties对象中
             is.close(); // 关闭流
             dbClassName = prop.getProperty( "dbClassName" );
             dbUrl = prop.getProperty( "dbUrl" );
             dbUser = prop.getProperty( "dbUser" );
             dbPwd = prop.getProperty( "dbPwd" );
         catch  (Exception e) {
             System.out.println( "属性文件  "  + propertyFileName +  " 打开失败!" );
         }
         try  {
 
             Class.forName(dbClassName); // 1.注册驱动
         catch  (ClassNotFoundException e) {
             e.printStackTrace();
         }
     }
 
     public  JDBConnection() { // 默认的不带参数的构造函数
         try  {
 
             Class.forName(dbClassName); // 1.注册驱动
         catch  (ClassNotFoundException e) {
             e.printStackTrace();
         }
     }
 
     public  static  Connection getConnection() {
         Connection conn =  null ;
         try  {
             // Class.forName(dbClassName);// 1.注册驱动
             conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd); //2.建立与数据库的链接
         catch  (Exception ee) {
             ee.printStackTrace();
         }
         if  (conn ==  null ) {
             System.err
                     .println( "警告: DbConnectionManager.getConnection() 获得数据库链接失败.\r\n\r\n链接类型:"
                             + dbClassName
                             "\r\n链接位置:"
                             + dbUrl
                             "\r\n用户/密码"
                             + dbUser +  "/"  + dbPwd);
         }
         return  conn;
     }
 
     /*
      * 功能:执行查询语句
      */
     public ResultSet executeQuery(String sql) {
         try { // 捕捉异常
             conn = getConnection(); // 调用getConnection()方法构造Connection对象的一个实例conn
             stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,//3.创建语句
                     ResultSet.CONCUR_READ_ONLY);
             rs = stmt.executeQuery(sql);//4.执行查询
         } catch (SQLException ex) {
             System.err.println(ex.getMessage()); // 输出异常信息
         }
         return rs; // 返回结果集对象 5.结果处理
     }
 
     /*
      * 功能:执行更新操作
      */
     public int executeUpdate(String sql) {
         int result = 0; // 定义保存返回值的变量
         try { // 捕捉异常
             conn = getConnection(); // 调用getConnection()方法构造Connection对象的一个实例conn
             stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                     ResultSet.CONCUR_READ_ONLY);
             result = stmt.executeUpdate(sql); // 执行更新操作
         } catch (SQLException ex) {
             result = 0; // 将保存返回值的变量赋值为0
         }
         return result; // 返回保存返回值的变量
     }
 
     /*
      * 功能:关闭数据库的连接
      */
     public  void  close() { //6.释放资源
         try  // 捕捉异常
             try  {
                 if  (rs !=  null ) {  // 当ResultSet对象的实例rs不为空时
                     rs.close();  // 关闭ResultSet对象
                 }
             finally  {
                 try  {
                     if  (stmt !=  null ) {  // 当Statement对象的实例stmt不为空时
                         stmt.close();  // 关闭Statement对象
                     }
                 finally  {
                     if  (conn !=  null ) {  // 当Connection对象的实例conn不为空时
                         conn.close();  // 关闭Connection对象
                     }
                 }
             }
         catch  (Exception e) {
             e.printStackTrace(System.err);  // 输出异常信息
         }
     }
 
}

属性文件
dbClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
dbClassName2=com.mysql.jdbc.Driver
dbPwd=sa
dbPwd2=root
dbUrl=jdbc\:microsoft\:sqlserver\://localhost\:1433;DatabaseName\=DB_ATM
dbUrl2=jdbc\:mysql\://localhost\:3306/db_atm
dbUser=sa
dbUser2=root
java自定义按钮外观
Java code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import  java.awt.FlowLayout;
import  javax.swing.JButton;
import  javax.swing.JFrame;
import  javax.swing.UIManager;
import  javax.swing.plaf.synth.SynthLookAndFeel;
  
public  class  MyButton {
  JFrame frame =  new  JFrame( "Test Buttons" );
  JButton jButton =  new  JButton( "JButton" );  // 按钮
  public  MyButton() {
   frame.setLayout( new  FlowLayout());
   frame.getContentPane().add(jButton);
  }
  public  void  show() {
   frame.pack();
   frame.show();
  }
  public  static  void  main(String[] args) {
   MyButton tb =  new  MyButton();
   tb.show();
   SynthLookAndFeel slf =  new  SynthLookAndFeel();
   try  {
       slf.load(MyButton. class .getResourceAsStream( "mybutton.xml" ), MyButton. class );
       UIManager.setLookAndFeel(slf);
   catch  (Exception e) {
       e.printStackTrace();
       return ;
   }
 
  }
}

XML/HTML code
1
2
3
4
5
6
7
8
9
10
11
< synth >
   < style  id = "mybutton" >
      < state >
        < imagePainter  method = "buttonBackground"  path = "mybutton.png"  sourceInsets = "3 6 12 20"  paintCenter = "true"  stretch = "true" />
     < insets  top = "3"  left = "6"  bottom = "12"  right = "20" />
     < font  name = "Aharoni"  size = "16" />
   </ state >
   < property  key = "Button.margin"  type = "insets"  value = "0 0 5 8" />
   </ style >
   < bind  style = "mybutton"  type = "region"  key = "Button" />
</ synth >
java访问资源文件
Java code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import  java.io.FileInputStream;   
import  java.io.FileOutputStream;   
import  java.util.Properties;   
   
public  class  PropertyEditor {   
     public  static  void  main(String[] args)  throws  Exception {   
         Properties prop =  new  Properties(); // 属性集合对象   
         FileInputStream fis =  new  FileInputStream( "prop.properties" ); // 属性文件输入流   (相对于根目录下的文件名,要加上包名 “src/prop.properties”)
         prop.load(fis); // 将属性文件流装载到Properties对象中   
         fis.close(); // 关闭流   
   
         // 获取属性值,sitename已在文件中定义   
         System.out.println( "获取属性值:sitename="  + prop.getProperty( "sitename" ));   
         // 获取属性值,country未在文件中定义,将在此程序中返回一个默认值,但并不修改属性文件   
         System.out.println( "获取属性值:country="  + prop.getProperty( "country" "中国" ));   
   
         // 修改sitename的属性值   
         prop.setProperty( "sitename" "中国" );   
         // 添加一个新的属性studio   
         prop.setProperty( "studio" "Boxcode Studio" );   
         // 文件输出流   
         FileOutputStream fos =  new  FileOutputStream( "prop.properties" );   
         // 将Properties集合保存到流中   
         prop.store(fos,  "Copyright (c) Boxcode Studio" );   
         fos.close(); // 关闭流   
     }   
}  


资源文件
sitename=\u4E2D\u56FD
siteurl=www.abcjava.com   
studio=Boxcode Studio
java日期处理bean
Java code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
import  java.text.ParsePosition;
import  java.text.SimpleDateFormat;
import  java.util.Calendar;
import  java.util.Date;
import  java.util.GregorianCalendar;
import  java.util.regex.Pattern;
 
import  org.apache.commons.logging.Log;
import  org.apache.commons.logging.LogFactory;
 
 
public  class  DateUtil {
     protected  static  Log logger = LogFactory.getLog(DateUtil. class );
 
     // 格式:年-月-日 小时:分钟:秒
     public  static  final  String FORMAT_ONE =  "yyyy-MM-dd HH:mm:ss" ;
 
     // 格式:年-月-日 小时:分钟
     public  static  final  String FORMAT_TWO =  "yyyy-MM-dd HH:mm" ;
 
     // 格式:年月日 小时分钟秒
     public  static  final  String FORMAT_THREE =  "yyyyMMdd-HHmmss" ;
 
     // 格式:年-月-日
     public  static  final  String LONG_DATE_FORMAT =  "yyyy-MM-dd" ;
 
     // 格式:月-日
     public  static  final  String SHORT_DATE_FORMAT =  "MM-dd" ;
 
     // 格式:小时:分钟:秒
     public  static  final  String LONG_TIME_FORMAT =  "HH:mm:ss" ;
 
     //格式:年-月
     public  static  final  String MONTG_DATE_FORMAT =  "yyyy-MM" ;
 
     // 年的加减
     public  static  final  int  SUB_YEAR = Calendar.YEAR;
 
     // 月加减
     public  static  final  int  SUB_MONTH = Calendar.MONTH;
 
     // 天的加减
     public  static  final  int  SUB_DAY = Calendar.DATE;
 
     // 小时的加减
     public  static  final  int  SUB_HOUR = Calendar.HOUR;
 
     // 分钟的加减
     public  static  final  int  SUB_MINUTE = Calendar.MINUTE;
 
     // 秒的加减
     public  static  final  int  SUB_SECOND = Calendar.SECOND;
 
     static  final  String dayNames[] = {  "星期日" "星期一" "星期二" "星期三" "星期四" ,
             "星期五" "星期六"  };
 
     @SuppressWarnings ( "unused" )
     private  static  final  SimpleDateFormat timeFormat =  new  SimpleDateFormat(
             "yyyy-MM-dd HH:mm:ss" );
 
     public  DateUtil() {
     }
 
     /**
      * 把符合日期格式的字符串转换为日期类型
      */
     public  static  java.util.Date stringtoDate(String dateStr, String format) {
         Date d =  null ;
         SimpleDateFormat formater =  new  SimpleDateFormat(format);
         try  {
             formater.setLenient( false );
             d = formater.parse(dateStr);
         catch  (Exception e) {
             // log.error(e);
             d =  null ;
         }
         return  d;
     }
 
     /**
      * 把符合日期格式的字符串转换为日期类型
      */
     public  static  java.util.Date stringtoDate(String dateStr, String format,
             ParsePosition pos) {
         Date d =  null ;
         SimpleDateFormat formater =  new  SimpleDateFormat(format);
         try  {
             formater.setLenient( false );
             d = formater.parse(dateStr, pos);
         catch  (Exception e) {
             d =  null ;
         }
         return  d;
     }
 
     /**
      * 把日期转换为字符串
      */
     public  static  String dateToString(java.util.Date date, String format) {
         String result =  "" ;
         SimpleDateFormat formater =  new  SimpleDateFormat(format);
         try  {
             result = formater.format(date);
         catch  (Exception e) {
             // log.error(e);
         }
         return  result;
     }
 
     /**
      * 获取当前时间的指定格式
      */
     public  static  String getCurrDate(String format) {
         return  dateToString( new  Date(), format);
     }
 
     public  static  String dateSub( int  dateKind, String dateStr,  int  amount) {
         Date date = stringtoDate(dateStr, FORMAT_ONE);
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
         calendar.add(dateKind, amount);
         return  dateToString(calendar.getTime(), FORMAT_ONE);
     }
 
     /**
      * 两个日期相减
      * @return 相减得到的秒数
      */
     public  static  long  timeSub(String firstTime, String secTime) {
         long  first = stringtoDate(firstTime, FORMAT_ONE).getTime();
         long  second = stringtoDate(secTime, FORMAT_ONE).getTime();
         return  (second - first) /  1000 ;
     }
 
     /**
      * 获得某月的天数
      */
     public  static  int  getDaysOfMonth(String year, String month) {
         int  days =  0 ;
         if  (month.equals( "1" ) || month.equals( "3" ) || month.equals( "5" )
                 || month.equals( "7" ) || month.equals( "8" ) || month.equals( "10" )
                 || month.equals( "12" )) {
             days =  31 ;
         else  if  (month.equals( "4" ) || month.equals( "6" ) || month.equals( "9" )
                 || month.equals( "11" )) {
             days =  30 ;
         else  {
             if  ((Integer.parseInt(year) %  4  ==  0  && Integer.parseInt(year) %  100  !=  0 )
                     || Integer.parseInt(year) %  400  ==  0 ) {
                 days =  29 ;
             else  {
                 days =  28 ;
             }
         }
 
         return  days;
     }
 
     /**
      * 获取某年某月的天数
      */
     public  static  int  getDaysOfMonth( int  year,  int  month) {
         Calendar calendar = Calendar.getInstance();
         calendar.set(year, month -  1 1 );
         return  calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
     }
 
     /**
      * 获得当前日期
      */
     public  static  int  getToday() {
         Calendar calendar = Calendar.getInstance();
         return  calendar.get(Calendar.DATE);
     }
 
     /**
      * 获得当前月份
      */
     public  static  int  getToMonth() {
         Calendar calendar = Calendar.getInstance();
         return  calendar.get(Calendar.MONTH) +  1 ;
     }
 
     /**
      * 获得当前年份
      */
     public  static  int  getToYear() {
         Calendar calendar = Calendar.getInstance();
         return  calendar.get(Calendar.YEAR);
     }
 
     /**
      * 返回日期的天
      */
     public  static  int  getDay(Date date) {
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
         return  calendar.get(Calendar.DATE);
     }
 
     /**
      * 返回日期的年
      */
     public  static  int  getYear(Date date) {
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
         return  calendar.get(Calendar.YEAR);
     }
 
     /**
      * 返回日期的月份,1-12
      */
     public  static  int  getMonth(Date date) {
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
         return  calendar.get(Calendar.MONTH) +  1 ;
     }
 
     /**
      * 计算两个日期相差的天数,如果date2 > date1 返回正数,否则返回负数
      */
     public  static  long  dayDiff(Date date1, Date date2) {
         return  (date2.getTime() - date1.getTime()) /  86400000 ;
     }
 
     /**
      * 比较两个日期的年差
      */
     public  static  int  yearDiff(String before, String after) {
         Date beforeDay = stringtoDate(before, LONG_DATE_FORMAT);
         Date afterDay = stringtoDate(after, LONG_DATE_FORMAT);
         return  getYear(afterDay) - getYear(beforeDay);
     }
 
     /**
      * 比较指定日期与当前日期的差
      */
     public  static  int  yearDiffCurr(String after) {
         Date beforeDay =  new  Date();
         Date afterDay = stringtoDate(after, LONG_DATE_FORMAT);
         return  getYear(beforeDay) - getYear(afterDay);
     }
     
     /**
      * 比较指定日期与当前日期的差
      */
     public  static  long  dayDiffCurr(String before) {
         Date currDate = DateUtil.stringtoDate(currDay(), LONG_DATE_FORMAT);
         Date beforeDate = stringtoDate(before, LONG_DATE_FORMAT);
         return  (currDate.getTime() - beforeDate.getTime()) /  86400000 ;
 
     }
 
     /**
      * 获取每月的第一周
      */
     public  static  int  getFirstWeekdayOfMonth( int  year,  int  month) {
         Calendar c = Calendar.getInstance();
         c.setFirstDayOfWeek(Calendar.SATURDAY);  // 星期天为第一天
         c.set(year, month -  1 1 );
         return  c.get(Calendar.DAY_OF_WEEK);
     }
     /**
      * 获取每月的最后一周
      */
     public  static  int  getLastWeekdayOfMonth( int  year,  int  month) {
         Calendar c = Calendar.getInstance();
         c.setFirstDayOfWeek(Calendar.SATURDAY);  // 星期天为第一天
         c.set(year, month -  1 , getDaysOfMonth(year, month));
         return  c.get(Calendar.DAY_OF_WEEK);
     }
 
     /**
      * 获得当前日期字符串,格式"yyyy_MM_dd_HH_mm_ss"
     
      * @return
      */
     public  static  String getCurrent() {
         Calendar cal = Calendar.getInstance();
         cal.setTime( new  Date());
         int  year = cal.get(Calendar.YEAR);
         int  month = cal.get(Calendar.MONTH) +  1 ;
         int  day = cal.get(Calendar.DAY_OF_MONTH);
         int  hour = cal.get(Calendar.HOUR_OF_DAY);
         int  minute = cal.get(Calendar.MINUTE);
         int  second = cal.get(Calendar.SECOND);
         StringBuffer sb =  new  StringBuffer();
         sb.append(year).append( "_" ).append(StringUtil.addzero(month,  2 ))
                 .append( "_" ).append(StringUtil.addzero(day,  2 )).append( "_" )
                 .append(StringUtil.addzero(hour,  2 )).append( "_" ).append(
                         StringUtil.addzero(minute,  2 )).append( "_" ).append(
                         StringUtil.addzero(second,  2 ));
         return  sb.toString();
     }
 
     /**
      * 获得当前日期字符串,格式"yyyy-MM-dd HH:mm:ss"
     
      * @return
      */
     public  static  String getNow() {
         Calendar today = Calendar.getInstance();
         return  dateToString(today.getTime(), FORMAT_ONE);
     }
 
    
 
     /**
      * 判断日期是否有效,包括闰年的情况
     
      * @param date
      *          YYYY-mm-dd
      * @return
      */
     public  static  boolean  isDate(String date) {
         StringBuffer reg =  new  StringBuffer(
                 "^((\\d{2}(([02468][048])|([13579][26]))-?((((0?" );
         reg.append( "[13578])|(1[02]))-?((0?[1-9])|([1-2][0-9])|(3[01])))" );
         reg.append( "|(((0?[469])|(11))-?((0?[1-9])|([1-2][0-9])|(30)))|" );
         reg.append( "(0?2-?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][12" );
         reg.append( "35679])|([13579][01345789]))-?((((0?[13578])|(1[02]))" );
         reg.append( "-?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))" );
         reg.append( "-?((0?[1-9])|([1-2][0-9])|(30)))|(0?2-?((0?[" );
         reg.append( "1-9])|(1[0-9])|(2[0-8]))))))" );
         Pattern p = Pattern.compile(reg.toString());
         return  p.matcher(date).matches();
     }
java dos输入输出
Java code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import  java.util.*;
public  class  DaoXu {
 
     /**
      * @param args
      */
     public  static  void  main(String[] args) {
         // TODO 自动生成方法存根
         System.out.println( "请输入单个字符并回车: " );
         Scanner c =  new  Scanner(System.in);
         
         String[] ch =  new  String[ 5 ];
         
         for ( int  i= 0 ; i< 5 ; i++){
             ch[i] = c.next();
         }
         
         //Arrays.sort(ch);
 
         System.out.print( "倒序输出: " );
         for  ( int  j = ch.length- 1 ; j >=  0 ; j--) {
             System.out.print(ch[j]+ " " );
         }
     }
}
java获取ip地址
Java code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import  java.awt.GridLayout;
import  java.awt.event.ActionEvent;
import  java.awt.event.ActionListener;
import  java.net.InetAddress;
import  java.net.UnknownHostException;
import  javax.swing.JButton;
import  javax.swing.JFrame;
import  javax.swing.JLabel;
import  javax.swing.JPanel;
import  javax.swing.JTextField;
 
public  class  ip  extends  JFrame
   implements  ActionListener
{
   private  static  final  long  serialVersionUID = 3339481369781127417L;
   JButton jb1;
   JButton jb2;
   JButton jb3;
   JPanel jp;
   JLabel jl;
   JLabel jl1;
   JTextField jt;
 
   public  ip()
   {
     this .jp =  new  JPanel();
     this .jl =  new  JLabel();
     this .jl1 =  new  JLabel( "您的域名:" );
     this .jb1 =  new  JButton( "提交" );
     this .jb2 =  new  JButton( "重置" );
     this .jb3 =  new  JButton( "退出" );
     this .jt =  new  JTextField( 20 );
     this .jb1.addActionListener( this );
     this .jb2.addActionListener( this );
     this .jb3.addActionListener( this );
     this .jp.setLayout( new  GridLayout( 3 2 ));
     this .jp.add( this .jl1);
     this .jp.add( this .jt);
     this .jp.add( this .jb1);
     this .jp.add( this .jl);
     this .jp.add( this .jb2);
     this .jp.add( this .jb3);
 
     setBounds( 200 200 500 240 );
     add( this .jp);
     setVisible( true );
     setDefaultCloseOperation( 3 );
   }
 
   public  static  void  main(String[] args)
   {
     new  ip();
   }
 
   public  void  actionPerformed(ActionEvent e) {
     if  (e.getSource() ==  this .jb1) {
       String url =  this .jt.getText();
       InetAddress ip =  null ;
       try  {
         ip = InetAddress.getByName(url);
       }
       catch  (UnknownHostException e1) {
         e1.printStackTrace();
       }
       this .jl.setText(ip.toString());
     }
     else  if  (e.getSource() ==  this .jb2) {
       this .jl.setText( "" );
       this .jt.setText( "" );
     else  {
       System.exit( 0 );
     }
   }
}
java系统托盘的应用
Java code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
package  com.msg;   
   
import  java.applet.Applet;   
import  java.applet.AudioClip;   
import  java.awt.AWTException;   
import  java.awt.Image;   
import  java.awt.MenuItem;   
import  java.awt.PopupMenu;   
import  java.awt.SystemTray;   
import  java.awt.TextArea;   
import  java.awt.TrayIcon;   
import  java.awt.event.ActionEvent;   
import  java.awt.event.ActionListener;   
import  java.awt.event.MouseAdapter;   
import  java.awt.event.MouseEvent;   
import  java.awt.event.WindowAdapter;   
import  java.awt.event.WindowEvent;   
import  java.net.MalformedURLException;   
import  java.net.URL;   
import  java.util.Date;   
   
import  javax.swing.ImageIcon;   
import  javax.swing.JFrame;   
import  javax.swing.SwingUtilities;   
import  javax.swing.UIManager;   
import  javax.swing.UnsupportedLookAndFeelException;   
   
import  org.jvnet.substance.skin.SubstanceBusinessBlueSteelLookAndFeel;   
   
   
/**  
  *   
  * 创建闪动的托盘图像  
  * @author Everest  
  *  
  */  
public  class  BickerTray  extends  JFrame  implements  Runnable {   
   
     private  static  final  long  serialVersionUID = -3115128552716619277L;   
   
     private  SystemTray sysTray; // 当前操作系统的托盘对象   
     private  TrayIcon trayIcon; // 当前对象的托盘   
   
     private  ImageIcon icon =  null ;   
     private  TextArea ta =  null ;   
        
     private  static  int  count =  1 //记录消息闪动的次数   
     private  boolean  flag =  false //是否有新消息   
     private  static  int  times =  1 //接收消息次数   
   
     public  BickerTray() {   
         this .createTrayIcon(); // 创建托盘对象   
         Image image =  this .getToolkit().getImage(getRes( "com/img/f32.gif" ));   
         this .setIconImage(image);   
         init();   
     }   
   
     public  URL getRes(String str){   
          return  this .getClass().getClassLoader().getResource(str);   
     }   
        
     /**  
      * 初始化窗体的方法  
      */  
     public  void  init() {   
         this .setTitle( "消息盒子" );   
         ta =  new  TextArea( "" );   
         ta.setEditable( false );   
         this .add(ta);   
         this .setSize( 400 400 );   
         //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
         this .setLocationRelativeTo( null );   
         // 添加窗口最小化事件,将托盘添加到操作系统的托盘   
         /*this.addWindowListener(new WindowAdapter() {  
             public void windowIconified(WindowEvent e) {  
                 addTrayIcon();  
             }  
         });*/  
         addTrayIcon();   
         this.setVisible(true);   
     }   
   
     /**  
      * 添加托盘的方法  
      */  
     public void addTrayIcon() {   
         try {   
             sysTray.add(trayIcon);// 将托盘添加到操作系统的托盘   
             setVisible(false);    // 使得当前的窗口隐藏   
             new Thread(this).start();   
         } catch (AWTException e1) {   
             e1.printStackTrace();   
         }   
     }   
   
     /**  
      * 创建系统托盘的对象 步骤:   
      * 1,获得当前操作系统的托盘对象   
      * 2,创建弹出菜单popupMenu   
      * 3,创建托盘图标icon  
      * 4,创建系统的托盘对象trayIcon  
      */  
     public void createTrayIcon() {   
         sysTray = SystemTray.getSystemTray();// 获得当前操作系统的托盘对象   
         icon = new ImageIcon(getRes("com/img/f17.gif"));// 托盘图标   
         PopupMenu popupMenu = new PopupMenu();// 弹出菜单   
         MenuItem mi = new MenuItem("打开");   
         MenuItem exit = new MenuItem("退出");   
         popupMenu.add(mi);   
         popupMenu.add(exit);   
         // 为弹出菜单项添加事件   
         mi.addActionListener(new ActionListener() {   
             public void actionPerformed(ActionEvent e) {   
                 ta.setText(ta.getText()+"\n==============================================\n 《通知》 今天下午4:00到大礼堂开会。 \n 第"+times+"次接收时间:"+ new Date().toLocaleString()); // 设置通知消息内容   
                 BickerTray.this.setExtendedState(JFrame.NORMAL);   
                 BickerTray.this.setVisible(true); // 显示窗口   
                 BickerTray.this.toFront(); //显示窗口到最前端   
                 flag = false;  //消息打开了   
                 count = 0; times++;   
             }   
         });   
         exit.addActionListener(new ActionListener() {   
             public void actionPerformed(ActionEvent e) {   
                 System.exit(0);   
             }   
         });   
         trayIcon = new TrayIcon(icon.getImage(), "消息盒子", popupMenu);   
         /** 添加鼠标监听器,当鼠标在托盘图标上双击时,默认显示窗口 */  
         trayIcon.addMouseListener(new MouseAdapter() {   
             public void mouseClicked(MouseEvent e) {   
                 if (e.getClickCount() == 2) { // 鼠标双击   
                     ta.setText(ta.getText()+"\n==============================================\n 《通知》 今天下午4:00到大礼堂开会。 \n 第"+times+"次接收时间:"+ new Date().toLocaleString()); // 设置通知消息内容   
                     BickerTray.this.setExtendedState(JFrame.NORMAL);   
                     BickerTray.this.setVisible(true); // 显示窗口   
                     BickerTray.this.toFront();   
                     flag = false;  //消息打开了   
                     count = 0; times++;   
                 }   
             }   
         });   
     }   
   
     /**  
      * 线程控制闪动   
      */  
     public void run() {   
         while (true) {   
             if(flag){ // 有新消息   
                 try {   
                     if(count == 1){   
                         // 播放消息提示音   
                         //AudioPlayer p = new AudioPlayer(getRes("file:com/sound/Msg.wav"));   
                         //p.play(); p.stop();   
                         try {   
                             AudioClip p = Applet.newAudioClip(new URL("file:sound/msg.wav"));   
                             p.play();   
                         } catch (MalformedURLException e) {   
                             e.printStackTrace();   
                         }   
                     }   
                     // 闪动消息的空白时间   
                     this.trayIcon.setImage(new ImageIcon("").getImage());   
                     Thread.sleep(500);   
                     // 闪动消息的提示图片   
                     this.trayIcon.setImage(icon.getImage());   
                     Thread.sleep(500);   
                 } catch (Exception e) {   
                     e.printStackTrace();   
                 }   
                 count++;   
             }else{ // 无消息或是消息已经打开过   
                 this.trayIcon.setImage(icon.getImage());   
                 try {   
                     Thread.sleep(20000);   
                     flag = true;   
                 } catch (InterruptedException e) {   
                     e.printStackTrace();   
                 }   
             }   
         }   
     }   
   
     /**  
      * @param args  
      */  
     public  static  void  main(String[] args) {   
         JFrame.setDefaultLookAndFeelDecorated( true );   
         try  {   
             UIManager.setLookAndFeel( new  SubstanceBusinessBlueSteelLookAndFeel());   
         catch  (UnsupportedLookAndFeelException e) {   
             e.printStackTrace();   
         }   
   
         SwingUtilities.invokeLater( new  Runnable() {   
             public  void  run() {   
                 new  BickerTray();   
             }   
         });   
     }   
   
}  
JEditorPane使用技巧
此组件使用 EditorKit 的实现来完成其操作。对于给予它的各种内容,它能有效地将其形态变换为适当的文本编辑器种类。该编辑器在任意给定时间的内容类型都由当前已安装的 EditorKit 确定。如果将内容设置为新的 URL,则使用其类型来确定加载该内容所应使用的 EditorKit。 
有多种方式可将内容加载到此组件中。 
1. 可使用 setText 方法来初始化字符串组件。在这种情况下,将使用当前的 EditorKit,且此类型为期望的内容类型。 
2.可使用 read 方法来初始化 Reader 组件。注意,如果内容类型为 HTML,那么只有使用了 <base> 标记,或者设置了 HTMLDocument 上的 Base 属性时才能解析相关的引用(例如对于类似图像等内容)。在这种情况下,将使用当前的 EditorKit,且此类型为期望的内容类型。 
3. 可使用 setPage 方法来初始化 URL 组件。在这种情况下,将根据该 URL 来确定内容类型,并且设置为该内容类型所注册的 EditorKit。 

构造函数 
JEditorPane() 
          创建一个新的 JEditorPane。 
JEditorPane(String url) 
          根据包含 URL 规范的字符串创建一个 JEditorPane。 
JEditorPane(String type, String text) 
          创建一个已初始化为给定文件的 JEditorPane。 
JEditorPane(URL initialPage) 
          根据用作输入的指定 URL 创建一个 JEditorPane。 

常用方法 
addHyperlinkListener(HyperlinkListener listener) 
          为了通知所有的更改(例如选中和进入某个链接)而添加一个超链接侦听器。 
getContentType() 
          获得设置此编辑器当前要处理的内容类型。 
getEditorKit() 
          获取用于处理内容的、当前已安装的工具包。 
getPage() 
          获得当前正在显示的 URL。 
getPreferredSize() 
          返回该 JEditorPane 的首选大小。 
getText() 
          根据此编辑器的内容类型返回此 TextComponent 中所包含的文本。 
getStream(URL page) 
          获取给定 URL 的流,该 URL 是将要由 setPage 方法加载的。 
scrollToReference(String reference) 
          将视图滚动到给定的参考位置(也就是正在显示的 URL 的 UL.getRef 方法所返回的值)。 
setContentType(String type) 
          设置此编辑器所处理的内容类型。 
setEditorKit(EditorKit kit) 
          设置当前为处理内容而安装的工具包。 
setPage(String url) 
          设置当前要显示的 URL。 
setPage(URL page) 
          设置当前要显示的 URL。 
setText(String t) 
          将此 TextComponent 的文本设置为指定内容,预期以此编辑器的内容类型格式提供该内容。
窗口居中显示的方法
 this.setLocationRelativeTo(null);
 public void setLocationRelativeTo(Component c)
设置窗口相对于指定组件的位置。 
如果组件当前未显示,或者 c 为 null,则此窗口将置于屏幕的中央。中点可以使用 GraphicsEnvironment.getCenterPoint 确定。 

如果该组件的底部在屏幕外,则将该窗口放置在 Component 最接近窗口中心的一侧。因此,如果 Component 在屏幕的右部,则 Window 将被放置在左部,反之亦然。
点到线段的最短距离
Java code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
private  double  pointToLine( int  x1,  int  y1,  int  x2,  int  y2,  int  x0,
                 int  y0) {
             double  space =  0 ;
             double  a, b, c;
             a = lineSpace(x1, y1, x2, y2); // 线段的长度
             b = lineSpace(x1, y1, x0, y0); // (x1,y1)到点的距离
             c = lineSpace(x2, y2, x0, y0); // (x2,y2)到点的距离
             if  (c <=  0.000001  || b <=  0.000001 ) {
                 space =  0 ;
                 return  space;
             }
             if  (a <=  0.000001 ) {
                 space = b;
                 return  space;
             }
             if  (c * c >= a * a + b * b) {
                 space = b;
                 return  space;
             }
             if  (b * b >= a * a + c * c) {
                 space = c;
                 return  space;
             }
             double  p = (a + b + c) /  2 ; // 半周长
             double  s = Math.sqrt(p * (p - a) * (p - b) * (p - c)); // 海伦公式求面积
             space =  2  * s / a; // 返回点到线的距离(利用三角形面积公式求高)
             return  space;
         }
 
         // 计算两点之间的距离
         private  double  lineSpace( int  x1,  int  y1,  int  x2,  int  y2) {
             double  lineLength =  0 ;
             lineLength = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2)
                     * (y1 - y2));
             return  lineLength;
 
         }
java各种数据库连接
Java code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
MySQL:    
     String Driver= "com.mysql.jdbc.Driver" ;     //驱动程序
     String URL= "jdbc:mysql://localhost:3306/db_name" ;    //连接的URL,db_name为数据库名    
     String Username= "username" ;     //用户名
     String Password= "password" ;     //密码
     Class.forName(Driver). new  Instance();
     Connection con=DriverManager.getConnection(URL,Username,Password);
Microsoft SQL Server  2.0 驱动( 3 个jar的那个):
     String Driver= "com.microsoft.jdbc.sqlserver.SQLServerDriver" ;     //连接SQL数据库的方法
     String URL= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_name" ;    //db_name为数据库名
     String Username= "username" ;     //用户名
     String Password= "password" ;     //密码
     Class.forName(Driver). new  Instance();     //加载数据可驱动
     Connection con=DriverManager.getConnection(URL,UserName,Password);     //
Microsoft SQL Server  3.0 驱动( 1 个jar的那个):  // 老紫竹完善
     String Driver= "com.microsoft.sqlserver.jdbc.SQLServerDriver" ;     //连接SQL数据库的方法
     String URL= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_name" ;    //db_name为数据库名
     String Username= "username" ;     //用户名
     String Password= "password" ;     //密码
     Class.forName(Driver). new  Instance();     //加载数据可驱动
     Connection con=DriverManager.getConnection(URL,UserName,Password);     //
Sysbase:
     String Driver= "com.sybase.jdbc.SybDriver" ;     //驱动程序
     String URL= "jdbc:Sysbase://localhost:5007/db_name" ;    //db_name为数据可名
     String Username= "username" ;     //用户名
     String Password= "password" ;     //密码
     Class.forName(Driver).newInstance();    
     Connection con=DriverManager.getConnection(URL,Username,Password);
Oracle(用thin模式):
     String Driver= "oracle.jdbc.driver.OracleDriver" ;     //连接数据库的方法
     String URL= "jdbc:oracle:thin:@loaclhost:1521:orcl" ;     //orcl为数据库的SID
     String Username= "username" ;     //用户名
     String Password= "password" ;     //密码
     Class.forName(Driver).newInstance();     //加载数据库驱动
     Connection con=DriverManager.getConnection(URL,Username,Password);    
PostgreSQL:
     String Driver= "org.postgresql.Driver" ;     //连接数据库的方法
     String URL= "jdbc:postgresql://localhost/db_name" ;    //db_name为数据可名
     String Username= "username" ;     //用户名
     String Password= "password" ;     //密码
     Class.forName(Driver).newInstance();    
     Connection con=DriverManager.getConnection(URL,Username,Password);
DB2:
     String Driver= "com.ibm.db2.jdbc.app.DB2.Driver" ;     //连接具有DB2客户端的Provider实例
     //String Driver="com.ibm.db2.jdbc.net.DB2.Driver";    //连接不具有DB2客户端的Provider实例
     String URL= "jdbc:db2://localhost:5000/db_name" ;    //db_name为数据可名
     String Username= "username" ;     //用户名
     String Password= "password" ;     //密码
     Class.forName(Driver).newInstance();    
     Connection con=DriverManager.getConnection(URL,Username,Password);
Informix:
     String Driver= "com.informix.jdbc.IfxDriver" ;    
     String URL= "jdbc:Informix-sqli://localhost:1533/db_name:INFORMIXSER=myserver" ;    //db_name为数据可名
     String Username= "username" ;     //用户名
     String Password= "password" ;     //密码
     Class.forName(Driver).newInstance();    
     Connection con=DriverManager.getConnection(URL,Username,Password);
JDBC-ODBC:
     String Driver= "sun.jdbc.odbc.JdbcOdbcDriver" ;
     String URL= "jdbc:odbc:dbsource" ;     //dbsource为数据源名
     String Username= "username" ;     //用户名
     String Password= "password" ;     //密码
     Class.forName(Driver).newInstance();    
     Connection con=DriverManager.getConnection(URL,Username,Password);
java哈弗曼编码的实现
Java code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
//哈弗曼编码的实现类
public  class  HffmanCoding {
     private  int  charsAndWeight[][]; // [][0]是 字符,[][1]存放的是字符的权值(次数)
     private  int  hfmcoding[][]; // 存放哈弗曼树
     private  int  i =  0 ; // 循环变量
     private  String hcs[];
 
     public  HffmanCoding( int [][] chars) {
         // TODO 构造方法
         charsAndWeight =  new  int [chars.length][ 2 ];
         charsAndWeight = chars;
         hfmcoding =  new  int [ 2  * chars.length -  1 ][ 4 ]; // 为哈弗曼树分配空间
     }
 
     // 哈弗曼树的实现
     public  void  coding() {
         int  n = charsAndWeight.length;
         if  (n ==  0 )
             return ;
         int  m =  2  * n -  1 ;
         // 初始化哈弗曼树
         for  (i =  0 ; i < n; i++) {
             hfmcoding[i][ 0 ] = charsAndWeight[i][ 1 ]; // 初始化哈弗曼树的权值
             hfmcoding[i][ 1 ] =  0 ; // 初始化哈弗曼树的根节点
             hfmcoding[i][ 2 ] =  0 ; // 初始化哈弗曼树的左孩子
             hfmcoding[i][ 3 ] =  0 ; // 初始化哈弗曼树的右孩子
         }
         for  (i = n; i < m; i++) {
             hfmcoding[i][ 0 ] =  0 ; // 初始化哈弗曼树的权值
             hfmcoding[i][ 1 ] =  0 ; // 初始化哈弗曼树的根节点
             hfmcoding[i][ 2 ] =  0 ; // 初始化哈弗曼树的左孩子
             hfmcoding[i][ 3 ] =  0 ; // 初始化哈弗曼树的右孩子
         }
 
         // 构建哈弗曼树
         for  (i = n; i < m; i++) {
             int  s1[] = select(i); // 在哈弗曼树中查找双亲为零的 weight最小的节点
             hfmcoding[s1[ 0 ]][ 1 ] = i; // 为哈弗曼树最小值付双亲
             hfmcoding[s1[ 1 ]][ 1 ] = i;
             hfmcoding[i][ 2 ] = s1[ 0 ]; // 新节点的左孩子
             hfmcoding[i][ 3 ] = s1[ 1 ]; // 新节点的右孩子
             hfmcoding[i][ 0 ] = hfmcoding[s1[ 0 ]][ 0 ] + hfmcoding[s1[ 1 ]][ 0 ]; // 新节点的权值是左右孩子的权值之和
         }
 
     }
 
     // 查找双亲为零的 weight最小的节点
     private  int [] select( int  w) {
         // TODO Auto-generated method stub
         int  s[] = { - 1 , - 1  }, j =  0 ; // s1 最小权值且双亲为零的节点的序号 , i 是循环变量
         int  min1 =  32767 , min2 =  32767 ;
         for  (j =  0 ; j < w; j++) {
             if  (hfmcoding[j][ 1 ] ==  0 ) { // 只在尚未构造二叉树的结点中查找(双亲为零的节点)
                 if  (hfmcoding[j][ 0 ] < min1) {
                     min2 = min1;
                     s[ 1 ] = s[ 0 ];
                     min1 = hfmcoding[j][ 0 ];
                     s[ 0 ] = j;
 
                 else  if  (hfmcoding[j][ 0 ] < min2) {
                     min2 = hfmcoding[j][ 0 ];
                     s[ 1 ] = j;
                 }
             }
         }
 
         return  s;
     }
 
     public  String[] CreateHCode() { // 根据哈夫曼树求哈夫曼编码
         int  n = charsAndWeight.length;
         int  i, f, c;
         String hcodeString =  "" ;
         hcs =  new  String[n];
         for  (i =  0 ; i < n; i++) { // 根据哈夫曼树求哈夫曼编码
             c = i;
             hcodeString =  "" ;
             f = hfmcoding[i][ 1 ];  // f 哈弗曼树的根节点
             while  (f !=  0 ) { // 循序直到树根结点
                 if  (hfmcoding[f][ 2 ] == c) { // 处理左孩子结点
                     hcodeString +=  "0" ;
                 else  {
                     hcodeString +=  "1" ;
                 }
                 c = f;
                 f = hfmcoding[f][ 1 ];
             }
             hcs[i] =  new  String( new  StringBuffer(hcodeString).reverse());
         }
         return  hcs;
     }
 
     public  String show(String s) { // 对字符串显示编码
         String textString =  "" ;
         char  c[];
         int  k = - 1 ;
         c =  new  char [s.length()];
         c = s.toCharArray(); // 将字符串转化为字符数组
         for  ( int  i =  0 ; i < c.length; i++) {
             k = c[i];
             for  ( int  j =  0 ; j < charsAndWeight.length; j++)
                 if  (k == charsAndWeight[j][ 0 ])
                     textString += hcs[j];
         }
         return  textString;
 
     }
 
     // 哈弗曼编码反编译
     public  String reCoding(String s) {
 
         String text =  "" ; // 存放反编译后的字符
         int  k =  0 , m = hfmcoding.length -  1 ; // 从根节点开始查询
         char  c[];
         c =  new  char [s.length()];
         c = s.toCharArray();
         k = m;
         for  ( int  i =  0 ; i < c.length; i++) {
             if  (c[i] ==  '0' ) {
                 k = hfmcoding[k][ 2 ]; // k的值为根节点左孩子的序号
                 if  (hfmcoding[k][ 2 ] ==  0  && hfmcoding[k][ 3 ] ==  0 ) // 判断是不是叶子节点,条件(左右孩子都为零)
                 {
                     text += ( char ) charsAndWeight[k][ 0 ];
                     k = m;
                 }
             }
             if  (c[i] ==  '1' ) {
                 k = hfmcoding[k][ 3 ]; // k的值为根节点右孩子的序号
                 if  (hfmcoding[k][ 2 ] ==  0  && hfmcoding[k][ 3 ] ==  0 ) // 判断是不是叶子节点,条件(左右孩子都为零)
                 {
                     text += ( char ) charsAndWeight[k][ 0 ];
                     k = m;
                 }
 
             }
         }
         return  text;
     }
}
Java code ?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/**
      * 人民币转成大写
     
      * @param value
      * @return String
      */
     public  static  String hangeToBig( double  value)
     {
         char [] hunit = {  '拾' '佰' '仟'  };  // 段内位置表示
         char [] vunit = {  '万' '亿'  };  // 段名表示
         char [] digit = {  '零' '壹' '贰' '叁' '肆' '伍' '陆' '柒' '捌' '玖'  };  // 数字表示
         long  midVal = ( long ) (value *  100 );  // 转化成整形
         String valStr = String.valueOf(midVal);  // 转化成字符串
 
         String head = valStr.substring( 0 , valStr.length() -  2 );  // 取整数部分
         String rail = valStr.substring(valStr.length() -  2 );  // 取小数部分
 
         String prefix =  "" // 整数部分转化的结果
         String suffix =  "" // 小数部分转化的结果
         // 处理小数点后面的数
         if  (rail.equals( "00" ))
         // 如果小数部分为0
             suffix =  "整" ;
         }
         else
         {
             suffix = digit[rail.charAt( 0 ) -  '0' ] +  "角"  + digit[rail.charAt( 1 ) -  '0' ] +  "分" // 否则把角分转化出来
         }
         // 处理小数点前面的数
         char [] chDig = head.toCharArray();  // 把整数部分转化成字符数组
         char  zero =  '0' // 标志'0'表示出现过0
         byte  zeroSerNum =  0 // 连续出现0的次数
         for  ( int  i =  0 ; i < chDig.length; i++)
         // 循环处理每个数字
             int  idx = (chDig.length - i -  1 ) %  4 // 取段内位置
             int  vidx = (chDig.length - i -  1 ) /  4 // 取段位置
             if  (chDig[i] ==  '0' )
             // 如果当前字符是0
                 zeroSerNum++;  // 连续0次数递增
                 if  (zero ==  '0' )
                 // 标志
                     zero = digit[ 0 ];
                 }
                 else  if  (idx ==  0  && vidx >  0  && zeroSerNum <  4 )
                 {
                     prefix += vunit[vidx -  1 ];
                     zero =  '0' ;
                 }
                 continue ;
             }
             zeroSerNum =  0 // 连续0次数清零
             if  (zero !=  '0' )
             // 如果标志不为0,则加上,例如万,亿什么的
                 prefix += zero;
                 zero =  '0' ;
             }
             prefix += digit[chDig[i] -  '0' ];  // 转化该数字表示
             if  (idx >  0 )
                 prefix += hunit[idx -  1 ];
             if  (idx ==  0  && vidx >  0 )
             {
                 prefix += vunit[vidx -  1 ];  // 段结束位置应该加上段名如万,亿
             }
         }
 
         if  (prefix.length() >  0 )
             prefix +=  '圆' // 如果整数部分存在,则有圆的字样
         return  prefix + suffix;  // 返回正确表示
     }
遗传算法
Java code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
import  java.util.*;
 
public  class  Tsp {   
     private  String cityName[]={ "北京" , "上海" , "天津" , "重庆" , "哈尔滨" , "长春" , "沈阳" , "呼和浩特" , "石家庄" , "太原" , "济南" , "郑州" , "西安" , "兰州" , "银川" , "西宁" , "乌鲁木齐" , "合肥" , "南京" , "杭州" , "长沙" , "南昌" , "武汉" , "成都" , "贵州" , "福建" , "台北" , "广州" , "海口" , "南宁" , "昆明" , "拉萨" , "香港" , "澳门" };
     //private String cityEnd[]=new String[34];
     private  int  cityNum=cityName.length;                //城市个数
     private  int  popSize =  50 ;                //种群数量
     private  int  maxgens =  20000 ;            //迭代次数
     private  double  pxover =  0.8 ;            //交叉概率
     private  double  pmultation =  0.05 ;        //变异概率
     private  long [][] distance =  new  long [cityNum][cityNum];
     private  int  range =  2000 ;                //用于判断何时停止的数组区间
     
     private  class  genotype {
         int  city[] =  new  int [cityNum];        //单个基因的城市序列
         long  fitness;                        //该基因的适应度
         double  selectP;                        //选择概率
         double  exceptp;                        //期望概率
         int  isSelected;                        //是否被选择
     }
     private  genotype[] citys =  new  genotype[popSize];
 
     /**
      *     构造函数,初始化种群
      */
     public  Tsp() {
         for  ( int  i =  0 ; i < popSize; i++) {
             citys[i] =  new  genotype();
             int [] num =  new  int [cityNum];
             for  ( int  j =  0 ; j < cityNum; j++)
                 num[j] = j;
             int  temp = cityNum;
             for  ( int  j =  0 ; j < cityNum; j++) {
                 int  r = ( int ) (Math.random() * temp);
                 citys[i].city[j] = num[r];
                 num[r] = num[temp -  1 ];
                 temp--;
             }
             citys[i].fitness =  0 ;
             citys[i].selectP =  0 ;
             citys[i].exceptp =  0 ;
             citys[i].isSelected =  0 ;
         }
         initDistance();
     }
     
     /**
      *  计算每个种群每个基因个体的适应度,选择概率,期望概率,和是否被选择。
      */
     public  void  CalAll(){
         for int  i =  0 ; i< popSize; i++){
             citys[i].fitness =  0 ;
             citys[i].selectP =  0 ;
             citys[i].exceptp =  0 ;
             citys[i].isSelected =  0 ;
         }
         CalFitness();
         CalSelectP();
         CalExceptP();
         CalIsSelected();
     }
 
     /**
      *     填充,将多选的填充到未选的个体当中
      */
     public  void  pad(){
         int  best =  0 ;
         int  bad =  0 ;
         while ( true ){           
             while (citys[best].isSelected <=  1  && best<popSize- 1 )
                 best ++;
             while (citys[bad].isSelected !=  0  && bad<popSize- 1 )
                 bad ++;
             for ( int  i =  0 ; i< cityNum; i++)
                 citys[bad].city[i] = citys[best].city[i];
                 citys[best].isSelected --;
                 citys[bad].isSelected ++;
                 bad ++;   
             if (best == popSize ||bad == popSize)
                 break ;
         }
     }
     
     /**
      *     交叉主体函数
      */
     public  void  crossover() {
         int  x;
         int  y;
         int  pop = ( int )(popSize* pxover / 2 );
         while (pop> 0 ){
             x = ( int )(Math.random()*popSize);
             y = ( int )(Math.random()*popSize);
             
             executeCrossover(x,y); //x y 两个体执行交叉
             pop--;
         }
     }
     
     /**
      * 执行交叉函数
      * @param 个体x
      * @param 个体y
      * 对个体x和个体y执行佳点集的交叉,从而产生下一代城市序列
      */
     private  void  executeCrossover( int  x, int  y){
         int  dimension =  0 ;
         for int  i =  0  ;i < cityNum; i++)
             if (citys[x].city[i] != citys[y].city[i]){
                 dimension ++;
             }   
         int  diffItem =  0 ;
         double [] diff =  new  double [dimension];
 
         for int  i =  0  ;i < cityNum; i++){
             if (citys[x].city[i] != citys[y].city[i]){
                 diff[diffItem] = citys[x].city[i];
                 citys[x].city[i] = - 1 ;
                 citys[y].city[i] = - 1 ;
                 diffItem ++;
             }   
         }
     
         Arrays.sort(diff);
 
         double [] temp =  new  double [dimension];
         temp = gp(x, dimension);
 
         for int  k =  0 ; k< dimension;k++)
             for int  j =  0 ; j< dimension; j++)
                 if (temp[j] == k){
                     double  item = temp[k];
                     temp[k] = temp[j];
                     temp[j] = item;
                     
                     item = diff[k];
                     diff[k] = diff[j];
                     diff[j] = item;   
                 }
         int  tempDimension = dimension;
         int  tempi =  0 ;
 
         while (tempDimension>  0  ){
             if (citys[x].city[tempi] == - 1 ){
                 citys[x].city[tempi] = ( int )diff[dimension - tempDimension];
                 
                 tempDimension --;
             }   
             tempi ++;
         }
 
         Arrays.sort(diff);
 
         temp = gp(y, dimension);
 
         for int  k =  0 ; k< dimension;k++)
             for int  j =  0 ; j< dimension; j++)
                 if (temp[j] == k){
                     double  item = temp[k];
                     temp[k] = temp[j];
                     temp[j] = item;
                     
                     item = diff[k];
                     diff[k] = diff[j];
                     diff[j] = item;   
                 }
 
         tempDimension = dimension;
         tempi =  0 ;
 
         while (tempDimension>  0  ){
             if (citys[y].city[tempi] == - 1 ){
                 citys[y].city[tempi] = ( int )diff[dimension - tempDimension];
                 
                 tempDimension --;
             }   
             tempi ++;
         }
 
     }
     
     /**
      * @param individual 个体
      * @param dimension      维数
      * @return 佳点集    (用于交叉函数的交叉点)    在executeCrossover()函数中使用
      */
     private  double [] gp( int  individual,  int  dimension){
         double [] temp =  new  double [dimension];
         double [] temp1 =  new  double [dimension];
         int  p =  2  * dimension +  3 ;
 
         while (!isSushu(p))
             p++;
 
         for int  i =  0 ; i< dimension; i++){
             temp[i] =  2 *Math.cos( 2 *Math.PI*(i+ 1 )/p) * (individual+ 1 );
             temp[i] = temp[i] - ( int )temp[i];
             if ( temp [i]<  0 )
                 temp[i] =  1 +temp[i];
 
         }
         for int  i =  0 ; i< dimension; i++)
             temp1[i] = temp[i];
         Arrays.sort(temp1);   
         //排序
         for int  i =  0 ; i< dimension; i++)
             for int  j =  0 ; j< dimension; j++)
                 if (temp[j]==temp1[i])
                     temp[j] = i;   
         return  temp;
     }
     
     
     /**
      *     变异
      */
     public  void  mutate(){
         double  random;
         int  temp;
         int  temp1;
         int  temp2;
         for int  i =  0  ; i< popSize; i++){
             random = Math.random();
             if (random<=pmultation){
                 temp1 = ( int )(Math.random() * (cityNum));
                 temp2 = ( int )(Math.random() * (cityNum));
                 temp = citys[i].city[temp1];
                 citys[i].city[temp1] = citys[i].city[temp2];
                 citys[i].city[temp2] = temp;
 
             }
         }       
     }
     
     /**
      *    打印当前代数的所有城市序列,以及其相关的参数
      */
     public  void  print(){
     /**
      * 初始化各城市之间的距离
      */
     private  void  initDistance(){
         for  ( int  i =  0 ; i < cityNum; i++) {
             for  ( int  j =  0 ; j < cityNum; j++){
                 distance[i][j] = Math.abs(i-j);
             }
         }
     }
     
     /**
      * 计算所有城市序列的适应度
      */
     private  void  CalFitness() {
         for  ( int  i =  0 ; i < popSize; i++) {
             for  ( int  j =  0 ; j < cityNum -  1 ; j++)
                 citys[i].fitness += distance[citys[i].city[j]][citys[i].city[j +  1 ]];
             citys[i].fitness += distance[citys[i].city[ 0 ]][citys[i].city[cityNum -  1 ]];
         }
     }
     
     /**
      * 计算选择概率
      */
     private  void  CalSelectP(){
         long  sum =  0 ;
         for int  i =  0 ; i< popSize; i++)
             sum += citys[i].fitness;
         for int  i =  0 ; i< popSize; i++)
             citys[i].selectP = ( double )citys[i].fitness/sum;
 
     }
     
     /**
      * 计算期望概率
      */
     private  void  CalExceptP(){
         for int  i =  0 ; i< popSize; i++)
             citys[i].exceptp = ( double )citys[i].selectP * popSize;
     }
     
     /**
      * 计算该城市序列是否较优,较优则被选择,进入下一代
      */
     private  void  CalIsSelected(){
         int  needSelecte = popSize;
         for int  i =  0 ; i< popSize; i++)
             if ( citys[i].exceptp< 1 ){
                 citys[i].isSelected++;
                 needSelecte --;
             }
         double [] temp =  new  double [popSize];
         for  ( int  i =  0 ; i < popSize; i++) {
//            temp[i] = citys[i].exceptp - (int) citys[i].exceptp;
//            temp[i] *= 10;
             temp[i] = citys[i].exceptp* 10 ;
         }
         int  j =  0 ;
         while  (needSelecte !=  0 ) {
             for  ( int  i =  0 ; i < popSize; i++) {
                 if  (( int ) temp[i] == j) {
                     citys[i].isSelected++;
                     needSelecte--;
                     if  (needSelecte ==  0 )
                         break ;
                 }
             }
             j++;
         }
         
     }
     
     /**
      * @param x
      * @return 判断一个数是否是素数的函数
      */
     private  boolean  isSushu(  int  x){
            if (x< 2 return  false ;
            for ( int  i= 2 ;i<=x/ 2 ;i++)
            if (x%i== 0 &&x!= 2 return  false ;
 
            return  true ;
         }
     
     /**
      * @param x 数组
      * @return x数组的值是否全部相等,相等则表示x.length代的最优结果相同,则算法结束
      */
     private  boolean  isSame( long [] x){
         for int  i =  0 ; i< x.length - 1 ; i++)
             if (x[i] !=x[i+ 1 ])
                 return  false ;
         return  true ;
     }
     
     /**
      * 打印任意代最优的路径序列
      */
     private  void  printBestRoute(){
         CalAll();
         long  temp = citys[ 0 ].fitness;
         int  index =  0 ;
         for  ( int  i =  1 ; i < popSize; i++) {
             if (citys[i].fitness<temp){
                 temp = citys[i].fitness;
                 index = i;
             }
         }
         System.out.println();
         System.out.println( "最佳路径的序列:" );
         for  ( int  j =  0 ; j < cityNum; j++)
         {
             String cityEnd[]={cityName[citys[index].city[j]]};
             for ( int  m= 0 ;m<cityEnd.length;m++)
             {
                 System.out.print(cityEnd[m] +  " " );
             }
         }
         
             //System.out.print(citys[index].city[j] + cityName[citys[index].city[j]] + "  ");
             //System.out.print(cityName[citys[index].city[j]]);
         System.out.println();
     }
     
     /**
      * 算法执行
      */
     public  void  run(){
         long [] result =  new  long [range];
         //result初始化为所有的数字都不相等
         for int  i  =  0 ; i< range; i++)
             result[i] = i;
         int  index =  0 ;        //数组中的位置
         int  num =  1 ;        //第num代
         while (maxgens> 0 ){
             System.out.println( "-----------------  第  " +num+ " 代  -------------------------" );
             CalAll();
             print();
             pad();
             crossover();
             mutate();
             maxgens --;
             long  temp = citys[ 0 ].fitness;
             for  int  i =  1 ; i< popSize; i++)
                 if (citys[i].fitness<temp){
                     temp = citys[i].fitness;
                 }
             System.out.println( "最优的解:" +temp);
             result[index] = temp;
             if (isSame(result))
                 break ;
             index++;
             if (index==range)
                 index =  0 ;
             num++;
         }
         printBestRoute();
     }
     
     /**
      * @param a 开始时间
      * @param b     结束时间
      */
     public  void  CalTime(Calendar a,Calendar b){
         long  x = b.getTimeInMillis() - a.getTimeInMillis();
         long  y = x/ 1000 ;
         x = x -  1000 *y;
         System.out.println( "算法执行时间:" +y+ "." +x+ " 秒" );
     }
     
     /**
      *    程序入口 
      */
     public  static  void  main(String[] args) {
         
         Calendar a = Calendar.getInstance();    //开始时间
         Tsp tsp =  new  Tsp();
         tsp.run();
         Calendar b = Calendar.getInstance();    //结束时间
         tsp.CalTime(a, b);
         
     }
}
 java 字符串解析
Java code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
StringTokenizer tokenizer =  new  StringTokenizer(number,  "," );
         boolean  bool =  true ;
         while  (tokenizer.hasMoreTokens()) {
             try  {
                 Double.valueOf(tokenizer.nextToken());
             catch  (Exception e) {
                 bool =  false ;
             }
         }
//将字符串转化为数组的方法
int  gv[];
    int  i =  0
    StringTokenizer tokenizer =  new  StringTokenizer(goodsVolume,  ",, " );
          gv =  new  int [tokenizer.countTokens()]; //动态的决定数组的长度
      while  (tokenizer.hasMoreTokens()) {
         String d = tokenizer.nextToken();
         gv[i] = Integer.valueOf(d); //将字符串转换为整型
         i++;
     }
 
  //字符串解析
     private  String[] stringAnalytical(String str, String divisionChar) {
         String string[];
        int  i =  0
         StringTokenizer tokenizer =  new  StringTokenizer(str, divisionChar);
         string =  new  String[tokenizer.countTokens()]; // 动态的决定数组的长度
          while  (tokenizer.hasMoreTokens()) {
             string[i] =  new  String();
             string[i] = tokenizer.nextToken();
             i++;
         }
         return  string; // 返回字符串数组
     }
 
  int  countTokens() 
           计算在生成异常之前可以调用此 tokenizer 的 nextToken 方法的次数。 
  boolean  hasMoreElements() 
           返回与 hasMoreTokens 方法相同的值。 
  boolean  hasMoreTokens() 
           测试此 tokenizer 的字符串中是否还有更多的可用标记。 
  Object nextElement() 
           除了其声明返回值是 Object 而不是 String 之外,它返回与 nextToken 方法相同的值。 
  String nextToken() 
           返回此 string tokenizer 的下一个标记。 
  String nextToken(String delim) 
           返回此 string tokenizer 的字符串中的下一个标记。 
 
 
 
 
public  class  StringAnalytical {
 
     // 字符串解析,将字符串转根据分割符换成字符串数组
     private  String[] stringAnalytical(String string,  char  c) {
         int  i =  0 ;
         int  count =  0 ;
 
         if  (string.indexOf(c) == - 1 )
             return  new  String[] { string }; // 如果不含分割符则返回字符本身
         char [] cs = string.toCharArray();
         int  length = cs.length;
         for  (i =  1 ; i < length -  1 ; i++) { // 过滤掉第一个和最后一个是分隔符的情况
             if  (cs[i] == c) {
                 count++; // 得到分隔符的个数
             }
         }
         String[] strArray =  new  String[count +  1 ];
         int  k =  0 , j =  0 ;
         String str = string;
         if  ((k = str.indexOf(c)) ==  0 ) // 去掉第一个字符是分隔符的情况
             str = str.substring(k +  1 );
         if  (str.indexOf(c) == - 1 ) // 检测是否含分隔符,如果不含则返回字符串
             return  new  String[] { str };
         while  ((k = str.indexOf(c)) != - 1 ) { // 字符串含分割符的时候
             strArray[j++] = str.substring( 0 , k);
             str = str.substring(k +  1 );
             if  ((k = str.indexOf(c)) == - 1  && str.length() >  0 )
                 strArray[j++] = str.substring( 0 );
         }
         return  strArray;
     }
 
     public  void  printString(String[] s) {
         System.out.println( "*********************************" );
         for  (String str : s)
             System.out.println(str);
     }
 
     public  static  void  main(String[] args) {
         String[] str =  null ;
         StringAnalytical string =  new  StringAnalytical();
         str = string.stringAnalytical( "1aaa" '@' );
         string.printString(str);
         str = string.stringAnalytical( "2aaa@" '@' );
         string.printString(str);
         str = string.stringAnalytical( "@3aaa" '@' );
         string.printString(str);
         str = string.stringAnalytical( "4aaa@bbb" '@' );
         string.printString(str);
         str = string.stringAnalytical( "@5aaa@bbb" '@' );
         string.printString(str);
         str = string.stringAnalytical( "6aaa@bbb@" '@' );
         string.printString(str);
         str = string.stringAnalytical( "@7aaa@" '@' );
         string.printString(str);
         str = string.stringAnalytical( "@8aaa@bbb@" '@' );
         string.printString(str);
         str = string.stringAnalytical( "@9aaa@bbb@ccc" '@' );
         string.printString(str);
         str = string.stringAnalytical( "@10aaa@bbb@ccc@eee" '@' );
         string.printString(str);
     }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值