??xml version="1.0" encoding="utf-8" standalone="yes"?>天堂v视频永久在线播放,欧美综合一区二区,精品精品导航http://www.aygfsteel.com/produ/category/55035.htmlzh-cnSat, 28 May 2016 13:45:32 GMTSat, 28 May 2016 13:45:32 GMT60C#对称加密法Java实现http://www.aygfsteel.com/produ/archive/2016/03/28/430629.html都较?/dc:creator>都较?/author>Mon, 28 Mar 2016 14:12:00 GMThttp://www.aygfsteel.com/produ/archive/2016/03/28/430629.htmlhttp://www.aygfsteel.com/produ/comments/430629.htmlhttp://www.aygfsteel.com/produ/archive/2016/03/28/430629.html#Feedback0http://www.aygfsteel.com/produ/comments/commentRss/430629.htmlhttp://www.aygfsteel.com/produ/services/trackbacks/430629.html最q因Z务需求,需要把一DC#~写的加密代码采用Javaq行实现Q在此记下我的实施过E和q程中碰到的一些问题以备后用。ؓ(f)了便于观察,只脓(chung)上C#源码中关键的部分Q?br />
 1 ///
 2 ///<summary>
 3 /// 加密Ҏ(gu)
 4 /// </summary>
 5 /// <param name=\"Source\">待加密的?/span></param>
 6 /// <returns>l过加密的串</returns>
 7 public static string Encrypto(string Source)
 8 {
 9     byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
10     MemoryStream ms = new MemoryStream();
11     mobjCryptoService.Key = GetLegalKey();
12     mobjCryptoService.IV = GetLegalIV();
13     //创徏对称加密器对?br />14     //下面的控制台打印是我自己d方便观察?/span>
15     Console.WriteLine("KeySize:" + mobjCryptoService.KeySize);
16     Console.WriteLine("LegalKeySizes:" + mobjCryptoService.LegalKeySizes.Length);
17     Console.WriteLine("Mode:"+ mobjCryptoService.Mode);
18     Console.WriteLine("Padding:"+mobjCryptoService.Padding);
19     ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
20     //定义数据流链接到加密{换的?/span>
21     CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
22     cs.Write(bytIn, 0, bytIn.Length);
23     cs.FlushFinalBlock();
24     ms.Close();
25     byte[] bytOut = ms.ToArray();
26 
27     return Convert.ToBase64String(bytOut);
28 }
29 
30 ///
31 ///<summary>
32 /// 解密Ҏ(gu)
33 /// </summary>
34 /// <param name=\"Source\">待解密的?/span></param>
35 /// <returns>l过解密的串</returns>
36 public static string Decrypto(string Source)
37 {
38     try
39     {
40         byte[] bytIn = Convert.FromBase64String(Source);
41         MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
42         mobjCryptoService.Key = GetLegalKey();
43         mobjCryptoService.IV = GetLegalIV();
44         //创徏对称解密器对?/span>
45         ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();
46         //定义数据流链接到加密{换的?/span>
47         CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
48         StreamReader sr = new StreamReader(cs);
49         return sr.ReadToEnd();
50     }
51     catch (Exception)
52     {
53         return string.Empty;
54     }
55 }

其中有一个问题:(x)
1 //生成加密器的对象由RijndaelManaged得来Q那么这个RijndaelManaged对象是干嘛的Q第三方的?原生的?
2 private static SymmetricAlgorithm mobjCryptoService = new RijndaelManaged();

调查之后Q好吧,它是一U对U加密算法(可以理解为在双方之间可以实现加解密)Q以下来自百U:(x)
高加密标准Q英语:(x)Advanced Encryption StandardQ羃写:(x)AESQ,在密码学中又URijndael加密法,是美国联邦政府采用的一U区块加密标准。这个标准用来替代原先的DESQ已l被多方分析且广为全世界所使用。经q五q的甄选流E,高加密标准q国国家标准与技术研IQNISTQ于2001q?1?6日发布于FIPS PUB 197Qƈ?002q??6日成为有效的标准?006q_(d)高加密标准已然成ؓ(f)对称密钥加密中最行的算法之一?/div>
之前对加密标准认识的q不多,但是通过代码来看Q似乎实现对U加密还需要别的材料,看到下面q两个方?/div>
 1 /// <summary>
 2 /// 获得密钥
 3 /// </summary>
 4 /// <returns>密钥</returns>
 5 private static byte[] GetLegalKey()
 6 {
 7     string _TempKey = Key;//Key已经预先写死在代码里?/span>
 8     mobjCryptoService.GenerateKey();
 9     byte[] bytTemp = mobjCryptoService.Key;
10     int KeyLength = bytTemp.Length;
11     if (_TempKey.Length > KeyLength)
12         _TempKey = _TempKey.Substring(0, KeyLength);
13     else if (_TempKey.Length < KeyLength)
14         _TempKey = _TempKey.PadRight(KeyLength, ' ');
15       return ASCIIEncoding.ASCII.GetBytes(_TempKey);
16 }
17 //GetLegalKeyҎ(gu)每次都会(x)q回一个长度ؓ(f)32的byte数组
18 //mobjCryptoService.Key = GetLegalKey();
19 
20 /// <summary>
21 /// 获得初始向量IV
22 /// </summary>
23 /// <returns>初试向量IV</returns>
24 private static byte[] GetLegalIV()
25 {
26     string _TempIV = "$%^&*()_osudghwe7%%2kdijskldglk2397^&*wigwuqwelkn";//q是虚构?/span>
27     mobjCryptoService.GenerateIV();
28     byte[] bytTemp = mobjCryptoService.IV;
29     int IVLength = bytTemp.Length;
30     if (_TempIV.Length > IVLength)
31         _TempIV = _TempIV.Substring(0, IVLength);
32     else if (_TempIV.Length < IVLength)
33         _TempIV = _TempIV.PadRight(IVLength, ' ');
34     return ASCIIEncoding.ASCII.GetBytes(_TempIV);
35 }
36 //GetLegalIVҎ(gu)每次都会(x)q回一个长度ؓ(f)16的byte数组
37 //mobjCryptoService.IV = GetLegalIV();

虽然是通过两个Ҏ(gu)来取得的KEY和IVQ二者都是byte数组Q,但是KEY和IV都是预先写死在代码里的,只不q是q回了特定长度的byte数组?/div>
1 //RijndaelManagedQ这是对U算法合法的key和IV的长度(分别以位来计)
2 //        Legal min key size = 128
3 //        Legal max key size = 256
4 //        Legal min block size = 128
5 //        Legal max block size = 256

l过调查Q还需要配|算法的mode和paddingQ此处ƈ没有q行讄Q所以默认分别ؓ(f)CipherMode.CBC和PaddingMode.PKCS7。详?a title="mode">mode?a title="padding">padding

目前来看Q需要调查的可以告一D落了,那么接下来,需要调查如何Java实现了。在Java中,实现加密需要用到JCE提供的Cipher对象Q类比C#的实玎ͼ借鉴q大E序员的智慧Q我首先试写了一下(只脓(chung)出关键部分)
 1 public void init(byte[] keyBytes) {
 2 
 3     // 如果密钥不16位,那么p? q个if 中的内容很重?/span>
 4     int base = 16;
 5     if (keyBytes.length % base != 0) {
 6         int groups = keyBytes.length / base
 7                 + (keyBytes.length % base != 0 ? 1 : 0);
 8         byte[] temp = new byte[groups * base];
 9         Arrays.fill(temp, (byte) 0);
10         System.arraycopy(keyBytes, 0, temp, 0, keyBytes.length);
11         keyBytes = temp;
12     }
13     // 转化成JAVA的密钥格?/span>
14     key = new SecretKeySpec(keyBytes, "AES");
15     try {
16         // 初始化cipher
17         cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
18     } catch (NoSuchAlgorithmException e) {
19         e.printStackTrace();
20     } catch (NoSuchPaddingException e) {
21         e.printStackTrace();
22     } 
23 }
24 
25 /**
26  * 加密Ҏ(gu)
27  * @param content 待加密內容字W串
28  * @param keySrc 加解密密U钥字符?br />29  * @param iv 法所需向量
30  * @return
31  * @throws UnsupportedEncodingException
32  */
33 public String encrypt(String content, String keySrc,String iv) throws UnsupportedEncodingException {
34     byte[] encryptedText = null;
35     init(keySrc.getBytes("utf-8"));
36     try {
37         cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv.getBytes()));
38         encryptedText = cipher.doFinal(content.getBytes("utf-8"));
39     } catch (Exception e) {
40         e.printStackTrace();
41     }
42     return Base64.encodeBase64String(encryptedText);
43 }
44 
45 /**
46  * 解密Ҏ(gu)
47  * @param encryptedData 待解密数?br />48  * @param keySrc 加解密密U钥字符?br />49  * @param iv 法所需向量
50  * @return
51  * @throws UnsupportedEncodingException 
52  */
53 public String decrypt(String encryptedData, String keySrc,String iv) throws UnsupportedEncodingException {
54     byte[] decryptedText = null;
55     init(keySrc.getBytes("utf-8"));
56     try {
57         cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv.getBytes()));
58         decryptedText = cipher.doFinal(Base64.decodeBase64(encryptedData));
59     } catch (Exception e) {
60         e.printStackTrace();
61     }
62     return new String(decryptedText);
63 }
64 
65 public static void main(String[] args) throws UnsupportedEncodingException {
66     EncryptingUtil eu = new EncryptingUtil();
67     
68     String content = "abc";
69     // 加密字符?/span>
70     System.out.println("加密前的Q? + content);
71     // 加密Ҏ(gu)
72     String enc = eu.encrypt(content,"U钥?,"向量?);
73     System.out.println(enc);
74     // 解密Ҏ(gu)
75     String dec = eu.decrypt(enc,"U钥?, "向量?);
76     System.out.println("解密后的内容Q? + dec);
77 }

Java版本的实玎ͼ目前有几个问题,一个就是补齐方式的问题Q在C#中默认的补齐方式PKCS7Q但是Java默认q不支持该补齐方式,只有PKCS5Q其ơ就是秘钥的长度问题QC#代码中的U钥长度?56位的Q但是Java默认最大支?28位的Q执行时?x)报?#8221;Illegal key size”的问题。这位大牛的东东帮到我了Q感谢?a title="查看">查看

当需要?56位长度的U钥Ӟ需要下载对应Java版本的JCE拓展包,图中的问题就是因为JCE拓展包和Java版本不匹配引L(fng)


]]>文本操作Q回文校?/title><link>http://www.aygfsteel.com/produ/archive/2015/11/18/430574.html</link><dc:creator>都较?/dc:creator><author>都较?/author><pubDate>Wed, 18 Nov 2015 08:04:00 GMT</pubDate><guid>http://www.aygfsteel.com/produ/archive/2015/11/18/430574.html</guid><wfw:comment>http://www.aygfsteel.com/produ/comments/430574.html</wfw:comment><comments>http://www.aygfsteel.com/produ/archive/2015/11/18/430574.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/produ/comments/commentRss/430574.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/produ/services/trackbacks/430574.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; "> 1</span> <span style="color: #0000FF; ">package</span> demo_2015_11_18;<br /><span style="color: #008080; "> 2</span> <br /><span style="color: #008080; "> 3</span> <span style="color: #0000FF; ">import</span> java.util.Arrays;<br /><span style="color: #008080; "> 4</span> <span style="color: #0000FF; ">import</span> java.util.Scanner;<br /><span style="color: #008080; "> 5</span> <br /><span style="color: #008080; "> 6</span> <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">class</span> DEMO {<br /><span style="color: #008080; "> 7</span> <br /><span style="color: #008080; "> 8</span>     <span style="color: #008000; ">/**</span><span style="color: #008000; "><br /></span><span style="color: #008080; "> 9</span> <span style="color: #008000; ">     * 判断输入的内Ҏ(gu)否是回文<br /></span><span style="color: #008080; ">10</span> <span style="color: #008000; ">     * </span><span style="color: #808080; ">@param</span><span style="color: #008000; "> args<br /></span><span style="color: #008080; ">11</span> <span style="color: #008000; ">     </span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">12</span>     <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">void</span> main(String[] args) {<br /><span style="color: #008080; ">13</span>         Scanner s = <span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">14</span>         <span style="color: #0000FF; ">try</span> {<br /><span style="color: #008080; ">15</span>             <span style="color: #008000; ">//</span><span style="color: #008000; ">d数据?/span><span style="color: #008000; "><br /></span><span style="color: #008080; ">16</span> <span style="color: #008000; "></span>            s = <span style="color: #0000FF; ">new</span> Scanner(System.in);<br /><span style="color: #008080; ">17</span>             String srcStr = s.nextLine();<br /><span style="color: #008080; ">18</span>             <span style="color: #0000FF; ">char</span>[] srcChars = srcStr.toCharArray();<br /><span style="color: #008080; ">19</span>             <br /><span style="color: #008080; ">20</span>             <span style="color: #008000; ">//</span><span style="color: #008000; ">判断数组长度奇偶</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">21</span> <span style="color: #008000; "></span>            <span style="color: #0000FF; ">char</span>[] t1 = <span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">22</span>             <span style="color: #0000FF; ">char</span>[] t2 = <span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">23</span>             <span style="color: #008000; ">//</span><span style="color: #008000; ">分割数组</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">24</span> <span style="color: #008000; "></span>            t1 = Arrays.copyOfRange(srcChars, 0, srcChars.length/2);<br /><span style="color: #008080; ">25</span>             <span style="color: #0000FF; ">if</span>(srcChars.length%2 == 0){<br /><span style="color: #008080; ">26</span>                 <span style="color: #008000; ">//</span><span style="color: #008000; ">偶数</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">27</span> <span style="color: #008000; "></span>                t2 = Arrays.copyOfRange(srcChars, srcChars.length/2, srcChars.length);<br /><span style="color: #008080; ">28</span>             }<span style="color: #0000FF; ">else</span>{<br /><span style="color: #008080; ">29</span>                 <span style="color: #008000; ">//</span><span style="color: #008000; ">奇数</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">30</span> <span style="color: #008000; "></span>                t2 = Arrays.copyOfRange(srcChars, srcChars.length/2 + 1, srcChars.length);<br /><span style="color: #008080; ">31</span>             }<br /><span style="color: #008080; ">32</span>             <br /><span style="color: #008080; ">33</span>             <span style="color: #008000; ">//</span><span style="color: #008000; ">反{后半截数l?/span><span style="color: #008000; "><br /></span><span style="color: #008080; ">34</span> <span style="color: #008000; "></span>            <span style="color: #0000FF; ">char</span>[] temp = <span style="color: #0000FF; ">new</span> <span style="color: #0000FF; ">char</span>[t2.length];<br /><span style="color: #008080; ">35</span>             <span style="color: #0000FF; ">for</span> (<span style="color: #0000FF; ">int</span> i = t2.length - 1; i >= 0; i--) {<br /><span style="color: #008080; ">36</span>                 temp[t2.length - 1 - i] = t2[i];<br /><span style="color: #008080; ">37</span>             }<br /><span style="color: #008080; ">38</span>             <br /><span style="color: #008080; ">39</span>             System.out.println(Arrays.equals(t1,temp));<br /><span style="color: #008080; ">40</span>             <br /><span style="color: #008080; ">41</span>         } <span style="color: #0000FF; ">catch</span> (Exception e) {<br /><span style="color: #008080; ">42</span>             s.close();<br /><span style="color: #008080; ">43</span>             e.printStackTrace();<br /><span style="color: #008080; ">44</span>         }<br /><span style="color: #008080; ">45</span>         <br /><span style="color: #008080; ">46</span>     }<br /><span style="color: #008080; ">47</span>     <br /><span style="color: #008080; ">48</span> }<br /><span style="color: #008080; ">49</span> </div><br />l果展示Q?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->asddsa<br /><span style="color: #0000FF; ">true</span><br /><br />asdsasd<br /><span style="color: #0000FF; ">false</span><br /><br />asdasd<br /><span style="color: #0000FF; ">false</span><br /><br />asdxdsa<br /><span style="color: #0000FF; ">true</span></div><img src ="http://www.aygfsteel.com/produ/aggbug/430574.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/produ/" target="_blank">都较?/a> 2015-11-18 16:04 <a href="http://www.aygfsteel.com/produ/archive/2015/11/18/430574.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文本操作Q元韛_W统?/title><link>http://www.aygfsteel.com/produ/archive/2015/11/17/430575.html</link><dc:creator>都较?/dc:creator><author>都较?/author><pubDate>Tue, 17 Nov 2015 08:11:00 GMT</pubDate><guid>http://www.aygfsteel.com/produ/archive/2015/11/17/430575.html</guid><wfw:comment>http://www.aygfsteel.com/produ/comments/430575.html</wfw:comment><comments>http://www.aygfsteel.com/produ/archive/2015/11/17/430575.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/produ/comments/commentRss/430575.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/produ/services/trackbacks/430575.html</trackback:ping><description><![CDATA[<div>泛泛的说Q今天的需求就是需要统计特定字W出现的个数Q想必各位都?x),如果仅仅是实玎ͼ传统的实现应该像下面q样<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span> Map<String, Integer> counts = <span style="color: #0000FF; ">new</span> HashMap<String, Integer>();<br /><span style="color: #008080; ">2</span> <span style="color: #0000FF; ">for</span> (String word : words) {<br /><span style="color: #008080; ">3</span>     Integer count = counts.get(word);<br /><span style="color: #008080; ">4</span>     <span style="color: #0000FF; ">if</span> (count == <span style="color: #0000FF; ">null</span>) {<br /><span style="color: #008080; ">5</span>         counts.put(word, 1);<br /><span style="color: #008080; ">6</span>     } <span style="color: #0000FF; ">else</span> {<br /><span style="color: #008080; ">7</span>         counts.put(word, count + 1);<br /><span style="color: #008080; ">8</span>     }<br /><span style="color: #008080; ">9</span> }</div><br /><div>q么做没问题Q简单粗暴快Q只不过q次我希望更优雅的实现它。今天特地要用一下Google的Guava工程提供的APIQMultiset。看上去他是一个集合,他也的确是,我们可以单的理解Z是一个元素顺序无养I元素可重的集合,q里不细Ԍ以用ؓ(f)丅R后l有Z(x)展开一下Guava的内宏V?/div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; "> 1</span> <span style="color: #0000FF; ">package</span> demo_2015_11_17;<br /><span style="color: #008080; "> 2</span> <br /><span style="color: #008080; "> 3</span> <span style="color: #0000FF; ">import</span> java.util.Scanner;<br /><span style="color: #008080; "> 4</span> <br /><span style="color: #008080; "> 5</span> <span style="color: #0000FF; ">import</span> com.google.common.collect.HashMultiset;<br /><span style="color: #008080; "> 6</span> <span style="color: #0000FF; ">import</span> com.google.common.collect.Multiset;<br /><span style="color: #008080; "> 7</span> <br /><span style="color: #008080; "> 8</span> <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">class</span> DEMO <br /><span style="color: #008080; "> 9</span> {<br /><span style="color: #008080; ">10</span>     <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">void</span> main( String[] args )<br /><span style="color: #008080; ">11</span>     {<br /><span style="color: #008080; ">12</span>         <br /><span style="color: #008080; ">13</span>         Scanner s = <span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">14</span>         <span style="color: #0000FF; ">try</span> {<br /><span style="color: #008080; ">15</span>             <span style="color: #008000; ">//</span><span style="color: #008000; ">讑֮数据?/span><span style="color: #008000; "><br /></span><span style="color: #008080; ">16</span> <span style="color: #008000; "></span>            s = <span style="color: #0000FF; ">new</span> Scanner(System.in);<br /><span style="color: #008080; ">17</span>             String srcStr = s.nextLine();<br /><span style="color: #008080; ">18</span>             String vowels = "aeiou";<br /><span style="color: #008080; ">19</span>             <br /><span style="color: #008080; ">20</span>             Multiset<String> ms = HashMultiset.create();<br /><span style="color: #008080; ">21</span>             <br /><span style="color: #008080; ">22</span>             <span style="color: #0000FF; ">char</span>[] srcChars = srcStr.toCharArray();<br /><span style="color: #008080; ">23</span>             String curChar = <span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">24</span>             <br /><span style="color: #008080; ">25</span>             <span style="color: #008000; ">//</span><span style="color: #008000; ">遍历数据?/span><span style="color: #008000; "><br /></span><span style="color: #008080; ">26</span> <span style="color: #008000; "></span>            <span style="color: #0000FF; ">for</span> (<span style="color: #0000FF; ">int</span> i = srcChars.length - 1; i >= 0; i--) {<br /><span style="color: #008080; ">27</span>                 curChar = String.valueOf(srcChars[i]);<br /><span style="color: #008080; ">28</span>                 <span style="color: #0000FF; ">if</span>(vowels.indexOf(curChar) != -1){<br /><span style="color: #008080; ">29</span>                     ms.add(curChar);<br /><span style="color: #008080; ">30</span>                 }<br /><span style="color: #008080; ">31</span>             }<br /><span style="color: #008080; ">32</span>             <br /><span style="color: #008080; ">33</span>             <span style="color: #0000FF; ">for</span> (String stemp : ms.elementSet()) {<br /><span style="color: #008080; ">34</span>                 System.out.println("元音字母[" + stemp + "]的出现次Cؓ(f)Q? + ms.count(stemp));<br /><span style="color: #008080; ">35</span>             }<br /><span style="color: #008080; ">36</span>             <br /><span style="color: #008080; ">37</span>         } <span style="color: #0000FF; ">finally</span> {<br /><span style="color: #008080; ">38</span>             s.close();<br /><span style="color: #008080; ">39</span>         }<br /><span style="color: #008080; ">40</span>     }<br /><span style="color: #008080; ">41</span> }</div><br />l果演示如下Q?br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->one twe three four five<br />元音字母[e]的出现次Cؓ(f)Q?<br />元音字母[u]的出现次Cؓ(f)Q?<br />元音字母[i]的出现次Cؓ(f)Q?<br />元音字母[o]的出现次Cؓ(f)Q?</div><div><br />因ؓ(f)使用了Guava工程Q用maven理依赖Q所以把Guava的版本脓(chung)一?/div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; "><</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">></span><br />    <span style="color: #0000FF; "><</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">></span>com.google.guava<span style="color: #0000FF; "></</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">></span><br />    <span style="color: #0000FF; "><</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">></span>guava<span style="color: #0000FF; "></</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">></span><br />    <span style="color: #0000FF; "><</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">></span>19.0-rc2<span style="color: #0000FF; "></</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">></span><br /><span style="color: #0000FF; "></</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">></span></div><br /></div><img src ="http://www.aygfsteel.com/produ/aggbug/430575.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/produ/" target="_blank">都较?/a> 2015-11-17 16:11 <a href="http://www.aygfsteel.com/produ/archive/2015/11/17/430575.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文本操作Q拉丁猪文字游戏http://www.aygfsteel.com/produ/archive/2015/11/16/430576.html都较?/dc:creator>都较?/author>Mon, 16 Nov 2015 08:27:00 GMThttp://www.aygfsteel.com/produ/archive/2015/11/16/430576.htmlhttp://www.aygfsteel.com/produ/comments/430576.htmlhttp://www.aygfsteel.com/produ/archive/2015/11/16/430576.html#Feedback0http://www.aygfsteel.com/produ/comments/commentRss/430576.htmlhttp://www.aygfsteel.com/produ/services/trackbacks/430576.htmlq个游戏的规则我见过一U以上,q里׃l基癄的规则ؓ(f)案例来实现就好了?/div>
规则大概是这P(x)l定一个单词,从左往右统计,单词字母中W一个元韛_母之前的单词Q移动到词尾Q移动完毕之后再在新l成的单词词添?#8220;ay”?/div>
例如Q给定单词bananaQ那么变换之后成为ananabayQ给定单词threeQ经q变换之后成为eethray
 1 package demo_2015_11_16;
 2 
 3 import java.util.Scanner;
 4 
 5 public class DEMO {
 6 
 7     /**
 8      * 拉丁猪文字游?br /> 9      * @param args
10      */
11     public static void main(String[] args) {
12         String vowels = "aeiou";
13         Scanner s = new Scanner(System.in);
14         String srcStr = s.nextLine();
15         System.out.println("你输入的是:(x)" + srcStr);
16         
17         StringBuilder retainStr = new StringBuilder();
18         
19         char[] srcChars = srcStr.toCharArray();
20         int returnIdx = 0;
21         int tempIdx = 0;
22         for (int i = 0; i < srcChars.length; i++) {
23             tempIdx = vowels.indexOf(String.valueOf(srcChars[i]).toLowerCase());
24             //当前位置是否是元?/span>
25             if(tempIdx != -1){
26                 //元音,l止Q截?/span>
27                 returnIdx = i;
28                 break;
29             }else{
30                 //辅音Q保?nbsp;Q蟩q?/span>
31                 retainStr.append(srcChars[i]);
32                 continue;
33             }
34         }
35         System.out.println(srcStr.substring(returnIdx) + retainStr.toString() + "ay");
36     }
37     
38 }
39 


]]>Java_接口和抽象类http://www.aygfsteel.com/produ/archive/2015/09/07/430529.html都较?/dc:creator>都较?/author>Mon, 07 Sep 2015 08:03:00 GMThttp://www.aygfsteel.com/produ/archive/2015/09/07/430529.htmlhttp://www.aygfsteel.com/produ/comments/430529.htmlhttp://www.aygfsteel.com/produ/archive/2015/09/07/430529.html#Feedback0http://www.aygfsteel.com/produ/comments/commentRss/430529.htmlhttp://www.aygfsteel.com/produ/services/trackbacks/430529.html
http://www.cnblogs.com/dolphin0520/p/3811437.html


]]>
վ֩ģ壺 | ˮ| | | Ϫ| Ͻ| ֣| | Ͳ| Ұ| ʮ| ɰ| ˰| | | | | | | | е| | | ɽ| ʯ| ʡ| û| | | ̫ԭ| | | | ƽԶ| ³| | | ɽ| | | ɽ|