黑马程序员技术交流社区

标题: 其中一道入学测试题 [打印本页]

作者: 伪善者。    时间: 2014-3-14 20:12
标题: 其中一道入学测试题
本帖最后由 伪善者。 于 2014-3-16 10:56 编辑

虽然算是做出来了 但是还是感觉需要好多优化的样子。请前辈们指点一下 最好是能加上注释哦  谢谢啦
/*9、 有一个字符串是用空格分隔的一系列整数,写一个程序把其中的整数做如下重新排列打印出来:
            奇数显示在左侧、偶数显示在右侧。比如‘2 7 8 3 22 9’显示成‘7 3 9 2 8 22’。*/
  1. static void Main(string[] args)
  2.         {/*9、 有一个字符串是用空格分隔的一系列整数,写一个程序把其中的整数做如下重新排列打印出来:
  3.             奇数显示在左侧、偶数显示在右侧。比如‘2 7 8 3 22 9’显示成‘7 3 9 2 8 22’。*/
  4.             string numbers = "2 7 8 3 22 9";//声明一个只有数字的字符串.
  5.             string[] nubm = numbers.Split();//遍历这个字符串的各个数字
  6.             string jishu="";//储存奇数
  7.             string oushu="";//储存偶数
  8.             string a = ""; string b = "";
  9.             for (int i = 0; i < nubm.Length; i++)
  10.             { //定义一个int类型的变量 接收转换的字符
  11.                 int cvt = Convert.ToInt32(nubm[i]);

  12.                 if (cvt % 2 != 0)//判断为奇数
  13.                 {
  14.                     jishu = cvt.ToString();//判断为奇数转换成字符串
  15.                   
  16.                     
  17.                     a = a +  " " +jishu;      
  18.                
  19.                 }
  20.                 if (cvt % 2 == 0)
  21.                 {

  22.                     oushu = cvt.ToString();//判断为偶数转换成字符串
  23.                     b = b + " "+oushu ;
  24.                   
  25.                   
  26.                 }
  27.             
  28.             
  29.             }
  30.             //定义一个新的字符串储存连接后的两个字符串.
  31.             
  32.             string result = (a+b).Trim();//去掉首位的空格
  33.             Console.Write(result);//输出结果
  34.             Console.ReadKey();
  35.         }
复制代码

感谢各位大大们 不吝赐教哈:D
作者: cancle    时间: 2014-3-14 21:43
本帖最后由 cancle 于 2014-3-14 21:47 编辑

额,我也写了下,感觉这个简练些。
  1. string numbers = "2 7 8 3 22 9";
  2.   List<string> jishu = new List<string>();//声明一个泛型集合来放奇数
  3. List<string> oushu = new List<string>();//放偶数
  4.    string[] s = numbers.Split(new char[] { ' ' },StringSplitOptions.RemoveEmptyEntries);//分割出每个数字,去掉元素中的空元素
  5.             for (int i = 0; i < s.Length; i++)
  6.             {
  7.                 if(int.Parse(s[i])%2==0)//把字符串的当前元素转换为整数后跟2取余,这个是偶数
  8.                 {
  9.                     oushu.Add(s[i]);//把偶数放入偶数集合
  10.                 }
  11.                 else
  12.                 {
  13.                     jishu.Add(s[i]);//把奇数放入奇数集合
  14.                 }
  15.             }
  16.             jishu.AddRange(oushu);//把偶数集合放入奇数集合的后面
  17.             foreach (string i in jishu)//遍历输出奇数集合
  18.             {
  19.                 Console.Write(i + " ");
  20.             }
  21.             Console.ReadKey();</p></p>
复制代码

作者: 鬼鬼    时间: 2014-3-15 14:27
如果不要求生成新字符串:
  1.         static void Main(string[] args)
  2.         {
  3.             string strOrigin = "2 7 8 3 22 9";
  4.             string[] strArray = strOrigin.Split(' ');
  5.             string even="";  //偶数字符串
  6.             for (int i = 0; i < strArray.Length; ++i)
  7.             {
  8.                 //若为奇数,则直接输出
  9.                 if (Convert.ToInt32(strArray[i]) % 2 == 1)
  10.                     Console.Write(strArray[i] + " ");
  11.                 else  //否则存入字符串
  12.                     even += strArray[i] + " ";
  13.             }
  14.             Console.WriteLine(even);
  15.             Console.ReadKey();
  16.         }
复制代码


如果要求生成新字符串:
  1.         static void Main(string[] args)
  2.         {
  3.             string strOrigin = "2 7 8 3 22 9";
  4.             string[] strArray = strOrigin.Split(' ');
  5.             string odd = "";  //奇数字符串
  6.             string even = "";  //偶数字符串
  7.             string strNew = null;  //新字符串
  8.             for (int i = 0; i < strArray.Length; ++i)
  9.             {
  10.                 if (Convert.ToInt32(strArray[i]) % 2 == 1)
  11.                     odd += strArray[i] + " ";
  12.                 else
  13.                     even += strArray[i] + " ";
  14.             }
  15.             strNew = odd + even;
  16.             //去掉末尾空格
  17.             strNew = strNew.Substring(0, strNew.Length - 1);
  18.             Console.WriteLine(strNew);
  19.             Console.ReadKey();
  20.         }
复制代码

作者: 夢醒了⊙﹏⊙b心    时间: 2014-3-15 15:26
亲 给你一个简单点的  我写得已经相当简单了  希望你能看得懂
  1. static string getNewString(string strInput)//传入一个字符串
  2.         {
  3.             List<string> list = strInput.Split(' ').ToList();//以空格分割并转换成泛型列表。
  4.             foreach (string item in strInput.Split(' '))//循环遍历已经分割的字符串。
  5.             {
  6.                 if(Convert.ToInt32(item)%2==0)//判断字符串是否为偶数
  7.                 {
  8.                     list.RemoveAt(list.IndexOf(item));//是偶数,找到列表中这个数所在位置,并删除。
  9.                     list.Add(item);//将这个数添加到列表的最后。
  10.                 }//如果这个数为奇数,则不进行任何操作。
  11.             }
  12.             return string.Join(" ",list);//向这些数中间添加空格并返回。
  13.         }
复制代码




作者: xydsdsr    时间: 2014-3-15 23:09
private static void JQSort(string[] arr)
        {
            int l = 0;
            int r = arr.Length - 1;
            while (l<r)
            {
                if (Convert.ToInt32(arr[l]) % 2 == 0)
                {
                    string temp = arr[r];
                    arr[r] = arr[l];
                    arr[l] = temp;
                    r--;
                }
                else
                {
                    l++;
                }
            }
        }
作者: 陈新海1    时间: 2014-8-13 16:52
  1. public class Test {
  2.         /*
  3.          * 9、 有一个字符串是用空格分隔的一系列整数,写一个程序把其中的整数做如下重新排列打印出来: 奇数显示在左侧、偶数显示在右侧。比如‘2 7 8 3
  4.          * 22 9’显示成‘7 3 9 2 8 22’。
  5.          */
  6.         public static void main(String[] args) {
  7.                 String str = "2 7 8 3 22 9";
  8.                 StringBuffer sb= new StringBuffer();
  9.                 StringBuffer sb1 = new StringBuffer();
  10.                 StringBuffer sb2 = new StringBuffer();
  11.                 String[] strs = str.split(" +");
  12.                 for (int x = 0; x < strs.length; x++) {
  13.                         Integer i = Integer.parseInt(strs[x]);
  14.                         System.out.print(i+" ");
  15.                         if ((i % 2) != 0)
  16.                                 sb1.append(i+" ");
  17.                         else
  18.                                 sb2.append(i+" ");

  19.                 }
  20.                 System.out.println();
  21.                 sb = sb1.append(sb2);
  22.                 System.out.println(sb);
  23.         }

  24. }
复制代码



作者: 十万一千    时间: 2014-10-3 16:13
  1.         public static String dos(String inputString, String regex) throws Exception {
  2.                 StringBuilder sb = new StringBuilder();
  3.                 List<Integer> list = new LinkedList<Integer>();
  4.                 String[] strings = inputString.split(regex);
  5.                 for (String string : strings) {
  6.                         list.add(new Integer(string));
  7.                 }
  8.                 list.add(null);
  9.                 for (int i = 0; i < list.size(); i++) {
  10.                         Integer ci = list.get(i);
  11.                         if (ci != null && ci % 2 == 0) {
  12.                                 list.add(list.remove(i));
  13.                         } else if (ci == null) {
  14.                                 list.remove(i);
  15.                                 break;
  16.                         }
  17.                 }
  18.                 for (Integer i : list) {
  19.                         sb.append(i + regex);
  20.                 }
  21.                 return sb.toString();
  22.         }
复制代码



作者: HHFSpeed    时间: 2015-1-18 00:12
大神呀,都是




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2