黑马程序员技术交流社区
标题:
其中一道入学测试题
[打印本页]
作者:
伪善者。
时间:
2014-3-14 20:12
标题:
其中一道入学测试题
本帖最后由 伪善者。 于 2014-3-16 10:56 编辑
虽然算是做出来了 但是还是感觉需要好多优化的样子。请前辈们指点一下 最好是能加上注释哦 谢谢啦
/*9、 有一个字符串是用空格分隔的一系列整数,写一个程序把其中的整数做如下重新排列打印出来:
奇数显示在左侧、偶数显示在右侧。比如‘2 7 8 3 22 9’显示成‘7 3 9 2 8 22’。*/
static void Main(string[] args)
{/*9、 有一个字符串是用空格分隔的一系列整数,写一个程序把其中的整数做如下重新排列打印出来:
奇数显示在左侧、偶数显示在右侧。比如‘2 7 8 3 22 9’显示成‘7 3 9 2 8 22’。*/
string numbers = "2 7 8 3 22 9";//声明一个只有数字的字符串.
string[] nubm = numbers.Split();//遍历这个字符串的各个数字
string jishu="";//储存奇数
string oushu="";//储存偶数
string a = ""; string b = "";
for (int i = 0; i < nubm.Length; i++)
{ //定义一个int类型的变量 接收转换的字符
int cvt = Convert.ToInt32(nubm[i]);
if (cvt % 2 != 0)//判断为奇数
{
jishu = cvt.ToString();//判断为奇数转换成字符串
a = a + " " +jishu;
}
if (cvt % 2 == 0)
{
oushu = cvt.ToString();//判断为偶数转换成字符串
b = b + " "+oushu ;
}
}
//定义一个新的字符串储存连接后的两个字符串.
string result = (a+b).Trim();//去掉首位的空格
Console.Write(result);//输出结果
Console.ReadKey();
}
复制代码
感谢各位大大们 不吝赐教哈:D
作者:
cancle
时间:
2014-3-14 21:43
本帖最后由 cancle 于 2014-3-14 21:47 编辑
额,我也写了下,感觉这个简练些。
string numbers = "2 7 8 3 22 9";
List<string> jishu = new List<string>();//声明一个泛型集合来放奇数
List<string> oushu = new List<string>();//放偶数
string[] s = numbers.Split(new char[] { ' ' },StringSplitOptions.RemoveEmptyEntries);//分割出每个数字,去掉元素中的空元素
for (int i = 0; i < s.Length; i++)
{
if(int.Parse(s[i])%2==0)//把字符串的当前元素转换为整数后跟2取余,这个是偶数
{
oushu.Add(s[i]);//把偶数放入偶数集合
}
else
{
jishu.Add(s[i]);//把奇数放入奇数集合
}
}
jishu.AddRange(oushu);//把偶数集合放入奇数集合的后面
foreach (string i in jishu)//遍历输出奇数集合
{
Console.Write(i + " ");
}
Console.ReadKey();</p></p>
复制代码
作者:
鬼鬼
时间:
2014-3-15 14:27
如果不要求生成新字符串:
static void Main(string[] args)
{
string strOrigin = "2 7 8 3 22 9";
string[] strArray = strOrigin.Split(' ');
string even=""; //偶数字符串
for (int i = 0; i < strArray.Length; ++i)
{
//若为奇数,则直接输出
if (Convert.ToInt32(strArray[i]) % 2 == 1)
Console.Write(strArray[i] + " ");
else //否则存入字符串
even += strArray[i] + " ";
}
Console.WriteLine(even);
Console.ReadKey();
}
复制代码
如果要求生成新字符串:
static void Main(string[] args)
{
string strOrigin = "2 7 8 3 22 9";
string[] strArray = strOrigin.Split(' ');
string odd = ""; //奇数字符串
string even = ""; //偶数字符串
string strNew = null; //新字符串
for (int i = 0; i < strArray.Length; ++i)
{
if (Convert.ToInt32(strArray[i]) % 2 == 1)
odd += strArray[i] + " ";
else
even += strArray[i] + " ";
}
strNew = odd + even;
//去掉末尾空格
strNew = strNew.Substring(0, strNew.Length - 1);
Console.WriteLine(strNew);
Console.ReadKey();
}
复制代码
作者:
夢醒了⊙﹏⊙b心
时间:
2014-3-15 15:26
亲 给你一个简单点的 我写得已经相当简单了 希望你能看得懂
static string getNewString(string strInput)//传入一个字符串
{
List<string> list = strInput.Split(' ').ToList();//以空格分割并转换成泛型列表。
foreach (string item in strInput.Split(' '))//循环遍历已经分割的字符串。
{
if(Convert.ToInt32(item)%2==0)//判断字符串是否为偶数
{
list.RemoveAt(list.IndexOf(item));//是偶数,找到列表中这个数所在位置,并删除。
list.Add(item);//将这个数添加到列表的最后。
}//如果这个数为奇数,则不进行任何操作。
}
return string.Join(" ",list);//向这些数中间添加空格并返回。
}
复制代码
作者:
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
public class Test {
/*
* 9、 有一个字符串是用空格分隔的一系列整数,写一个程序把其中的整数做如下重新排列打印出来: 奇数显示在左侧、偶数显示在右侧。比如‘2 7 8 3
* 22 9’显示成‘7 3 9 2 8 22’。
*/
public static void main(String[] args) {
String str = "2 7 8 3 22 9";
StringBuffer sb= new StringBuffer();
StringBuffer sb1 = new StringBuffer();
StringBuffer sb2 = new StringBuffer();
String[] strs = str.split(" +");
for (int x = 0; x < strs.length; x++) {
Integer i = Integer.parseInt(strs[x]);
System.out.print(i+" ");
if ((i % 2) != 0)
sb1.append(i+" ");
else
sb2.append(i+" ");
}
System.out.println();
sb = sb1.append(sb2);
System.out.println(sb);
}
}
复制代码
作者:
十万一千
时间:
2014-10-3 16:13
public static String dos(String inputString, String regex) throws Exception {
StringBuilder sb = new StringBuilder();
List<Integer> list = new LinkedList<Integer>();
String[] strings = inputString.split(regex);
for (String string : strings) {
list.add(new Integer(string));
}
list.add(null);
for (int i = 0; i < list.size(); i++) {
Integer ci = list.get(i);
if (ci != null && ci % 2 == 0) {
list.add(list.remove(i));
} else if (ci == null) {
list.remove(i);
break;
}
}
for (Integer i : list) {
sb.append(i + regex);
}
return sb.toString();
}
复制代码
作者:
HHFSpeed
时间:
2015-1-18 00:12
大神呀,都是
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2