siki老师出的又一道题目,刚看题目觉得有点难,其实想通了就不难了。
题目是:编写一个控制台程序,要求用户输入一组数字用空格间隔,对用户输入的数字从小到大输出。(Array.Sort方法和冒泡排序)
今天先搞定了Array.Sort方法排序,其实调用Array.Sort方法很简单,觉得有困难的是,怎么对数组进行处理?
思路如下:
一、处理用户输入的数组
用户输入一组数字用空格间隔,怎么才能将一个字符串用空格分开呢?回顾了前天学习的内容,siki老师简单的演示了下Split方法(就写了一段小代码,一不留神就过去了。)
Split方法,可以以某个字符对字符串进行分割,看懂了演示,又找了找网上其他的例子,自己写了一个小程序来验证了下,代码如下:
namespace Split方法
{
class Program
{
static void Main(string[] args)
{
string str = "小X豆X丁X多X多";
string[] strArray = str.Split('X');//这里是字符'X',因为Split方法是用字符来分割字符串的
for (int i = 0; i < strArray.Length; i++)
{
Console.Write(strArray[i]);//输出一个字符串数组的内容需要遍历这个数组一次
}
Console.ReadKey();
}
}
}
运行结果:字符串:"小X豆X丁X多X多"中的X都被Split方法去掉了,顺序输出的字符串元素就是:小豆丁多多
好啦,既然已经掌握了分割字符串的方法,那么题目需求的一半就搞定了,敲吧敲吧,代码如下
namespace 练习5._5排序与数组处理
{
class Program
{
static void Main(string[] args)
{
string str = Console.ReadLine();//接受用户输入,假设用户输入的全是数字空格,没有其他字符
string[] strArray = str.Split(' ');//用char空格分割字符串,再将分割后的数组存入strArray
int[] numArray = new int[strArray.Length];//初始化一个整数型numArray,length与strArray相等
for (int i = 0; i < strArray.Length; i++)//遍历strArray
{
int temp = Convert.ToInt32(strArray[i]);//创建中间变量temp,用于接受strArray[i]的值
numArray[i] = temp;//将temp的值赋值给numArray[i]
Console.Write(numArray[i]+"/");//用这行代码可以检测去掉空格后,数列的输出结果
}
}
}
}
至此,这道题的一半被做出来了。将用户输入的字符串变成了一个int型的数组
二、排序
今天的排序就调用Array.Sort方法就行了,这是C#内置的方法,还没有研究透彻,直接用用先
namespace 练习5._5排序与数组处理
{
class Program
{
static void Main(string[] args)
{
string str = Console.ReadLine();
string[] strArray = str.Split(' ');
int[] numArray = new int[strArray.Length];
for (int i = 0; i < strArray.Length; i++)
{
int temp = Convert.ToInt32(strArray[i]);
numArray[i] = temp;
}
Array.Sort(numArray);//用Array.Sort对numArray排序
for (int i = 0; i < numArray.Length; i++)
{
Console.Write(numArray[i]+" ");//输出排序后的numArray
}
Console.ReadKey();
}
}
}
运行验证下,没问题。
明天再学习下传说中的冒泡法。