黑马程序员技术交流社区
标题:
求更简便方法: 有一个字符串是用空格分隔的一系列整数...
[打印本页]
作者:
Always.
时间:
2013-9-17 11:57
标题:
求更简便方法: 有一个字符串是用空格分隔的一系列整数...
本帖最后由 Always. 于 2013-9-24 12:54 编辑
题目:有一个字符串是用空格分隔的一系列整数,写一个程序把其中的整数做如下重新排列打印出奇数显示在左侧、偶数显示在右侧。 比如‘2 7 8 3 22 9’显示成‘7 3 9 2 8 22‘
我的代码能够实现程序功能,但是觉得代码长度太长,有更简便的实现方法吗?
代码如下:
bool flag = false;
do //此处的循环的作用是:当用户输入的不是一系列整数的时候,提示用户重新输入,直到满足条件为止
{
//此处的try{}catch{}是用于判别输入的是否为一系列整数
try
{
Console.WriteLine("请用户输入一串数字,中间用空格隔开");
string strnumbers = Console.ReadLine();
string[] remove = strnumbers.Split(' '); //remove[]这个数组中的内容是strnumbers分割空格之后的内容
int[] numbers = new int[remove.Length]; //numbers这个数组是用于接收将字符串数组转变为整形数组的内容
for (int i = 0; i < remove.Length; i++)
{
numbers = Convert.ToInt32(remove);
}
flag = false;
int ounum = 0;//定义一个计算偶数个数的变量
int jinum = 0;//定义一个计算奇数个数的变量
for (int j = 0; j < numbers.Length; j++) //此个循环是为了计算出numbers数组中有多少个奇数有多少个偶数
{
if (numbers[j] % 2 == 0)
{
ounum++;
}
else
{
jinum++;
}
}
int[] ounum1 = new int[ounum]; int n = 0;//定义一个存放偶数的数组 ,n为偶数存放的位置
int[] jinum1 = new int[jinum]; int t = 0;//定义一个存放奇数的数组
for (int j = 0; j < numbers.Length; j++)
{
if (numbers[j] % 2 == 0) //当numbers[j]为偶数的时候,这个数存放在偶数数组中。
//比如numbers[0]为偶数时,放在ounum[0]中,于此同时n++;
{
ounum1[n] = numbers[j];
n++;
}
else //当numbers[j]为奇数的时候,这个数存放在奇数数数组中。比如numbers[0]为奇数时,放在jinum[0]中,于此同时n++;
{
jinum1[t] = numbers[j];
t++;
}
}
for (int i = 0; i < jinum1.Length; i++) //遍历输出奇数数组的内容
{
Console.Write(jinum1 + " ");
}
for (int j = 0; j < ounum1.Length; j++) //遍历输出偶数组的内容
{
Console.Write(ounum1[j] + " ");
}
}
catch
{
Console.WriteLine("请输入整数");
flag = true;
}
} while (flag);
Console.ReadKey();
我的思路:1.先把字符串数组转换成整数数组 2.在整数数组中,找出奇数,存在奇数数组中;找出偶数,存在偶数数组中。 3. 把奇数数组和偶数数组拼接,便可实现功能。
作者:
℡跡....
时间:
2013-9-17 12:04
呀呀,代码格式成这样,谁看得清呀。。。
作者:
haxyek
时间:
2013-9-17 12:13
本帖最后由 haxyek 于 2013-9-17 12:19 编辑
题目只是需要打印输出,没必要拼接。。{:soso_e100:}
static void Main(string[] args)
{
string str="2 7 8 3 22 9";
string[] Tstr = str.Split(' ');
for (int i = 0; i < Tstr.Length; i++)
{
if (Convert.ToInt32(Tstr[i]) % 2 != 0)
Console.Write(Tstr[i] + " ");
}
for (int i = 0; i < Tstr.Length; i++)
{
if (Convert.ToInt32(Tstr[i]) % 2 == 0)
Console.Write(Tstr[i] + " ");
}
Console.ReadLine();
}
复制代码
作者:
Always.
时间:
2013-9-17 12:20
haxyek 发表于 2013-9-17 12:13
题目只是需要打印输出,没必要拼接。。
谢谢~你们都好厉害,这个题目思路知道,但是实现的时候走了好多弯路。
作者:
七里香
时间:
2013-9-17 12:56
Console.WriteLine("请输入:");
string strInput=Console.ReadLine();
string[] strNums = strInput.Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries);
string jishu = null, oushu = null;
int[] intNums = new int[strNums.Length];
int i = 0;
try
{
//转换
foreach (string s in strNums)
{
intNums[i] = Convert.ToInt32(s);
i++;
}
//判定并拼接成字符串
for (int j = 0; j <intNums.Length; j++)
{
if (intNums[j] % 2 == 0)
{
oushu = oushu + intNums[j].ToString() + " ";
}
else
{
jishu = jishu + intNums[j].ToString() + " ";
}
}
Console.WriteLine("{0} {1}",jishu,oushu);
}
catch(Exception)
{
Console.WriteLine("你输入的不是数字!");
}
Console.ReadKey();
复制代码
好吧我是来骗技术分的{:soso_e149:}
作者:
guo329838627
时间:
2013-9-17 13:51
Console.WriteLine("请输入一串数字,中间用空格隔开!");//提示信息
string list = Console.ReadLine();
string JiShu = "";//初始化奇数
string OuShu="";//初始化偶数
string[] Res = list.Split(' ');//将数字放到数组中
for (int i = 0; i < Res.Length; i++)//遍历数组
{
if (int.Parse(Res[i]) % 2 != 0)//如果为奇数
{
JiShu += Res[i] + " ";//则放到Jishu中
}
else//偶数
{
OuShu += Res[i] + " ";//则放到OuShu中
}
}
OuShu = OuShu.Substring(0, OuShu.LastIndexOf(' '));//处理掉最后一个空格
Console.WriteLine("最新排序:"+JiShu+OuShu);//输出
复制代码
这是我写的方法,希望对你有帮助
作者:
顾磊磊
时间:
2013-9-24 12:44
static void Main(string[] args)
{
string numbers = "65 98 90 543 67 453 ";
StringBuilder even = new StringBuilder();//存储偶数
StringBuilder odd = new StringBuilder();//存储奇数
string[] numlist = numbers.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);//排除了空字符串这种结果
foreach (string num in numlist)
{
int n = 0;//buffer
if (!int.TryParse(num, out n))
{
Console.WriteLine("输入的某个数据有问题但是这里选择了继续! 这个有问题的数据是:"+num);
continue;
}
if (n % 2 == 0)
even.Append(num + ' ');
else
odd.Append(num + ' ');
}
Console.WriteLine(odd.ToString() + even.ToString());//最终把两个字符串加起来就OK了。
Console.ReadKey();
}
复制代码
这是我写一段代码,偶以为值得一看,{:soso_e116:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2