C#实现在控制台输入若干个数,以空格间隔输入或者以回车间隔输入,将输入的数存到数组中
将代码粘过去能直接运行,注意设置一个全局的整型变量NUM。
Console.Write("请输入" + NUM + "个数:");
string str = Console.ReadLine();
char[] ch = { ' ' };
//动态数组,用来记录输入的数的个数
ArrayList ar = new ArrayList();
string[] st = str.Split(ch, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < st.Length; i++)
{
ar.Add(st[i]);
}
while (ar.Count < NUM)
{
str = Console.ReadLine();
st = str.Split(ch, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < st.Length; i++)
{
ar.Add(st[i]);
}
}
int[] a = new int[NUM];
for (int i = 0; i < NUM; i++)
{
a[i] = Convert.ToInt32(ar[i]);
}
foreach (int i in a)
{
Console.Write(i+" ");
}
Console.WriteLine();
这里核心用到的就是String类中的Split的重载方法public String[] Split(char[] separator, StringSplitOptions options);
参数:
separator:分隔此字符串中子字符串的字符数组、不包含分隔符的空数组或 null。
options:要省略返回的数组中的空数组元素,则为 System.StringSplitOptions.RemoveEmptyEntries;要包含返回的数组中的空数组元素,则为System.StringSplitOptions.None。
因为我们不需要无效的空格字符,因此选择System.StringSplitOptions.RemoveEmptyEntries这个作为参数,这样得到的就是有效字符(不含空格)组成的字符串数组(也就是上面的string[] st),这样就解决了两个有效字符间有空格的问题以及切割后依然有空格的问题(解释:切割之前的空格被切割掉,而切割之后的空格被Split重载方法中的System.StringSplitOptions.RemoveEmptyEntries参数指明并当作无效字符丢弃)。接着,我们可能会在其中进行换行,这里我使用ArrayList中的Add方法将已经输入的字符串数组(其实就是切割之后的一个个字符串,按照给定的格式切割,而我给定的格式是char[] ch={‘ ‘}),这样,将每次输入的字符串切割后装入到ArrayList中,然后每次判断其中的个数,就完成了在控制台输入字符时中间空格或回车随意切换的问题。
运行结果如下:
还没有评论,来说两句吧...