1.先判断用户输入的是否是数字,用if-else语句来判断;
2.将用户输入的数字字符串转换成char数组;
3.用for循环遍历每个字符,根据switch-case语句来逐一判断。
4.再建立一个int数组来接收判断后的结果,最后for循环输出。
class Program
{
static void Main(string[] args)
{
//计算用户输入的一串数字中每个数字出现的次数
Console.WriteLine("请输入一串数字");
string str = Console.ReadLine();
// 将字符串转换为字符数组
char[] chnum = str.ToCharArray();
#region 判断用户输入的是否是数字
for ( int i = 0; i < chnum.Length; i++)
{ // 判断每一个字符是否是数字 通过char的方法来判断
if (! char.IsNumber(chnum[i]))
{
Console.WriteLine( " 您的输入有误,请输入数字 ");
Console.ReadKey();
return;
}
}
// 定义一个新的数组来保存计数
int[] count= new int[ 9];
#region for循环遍历
// for循环遍历
for ( int i = 0; i < chnum.Length; i++)
{
switch (chnum[i])
{
case ' 1 ':
count[ 0]++;
break;
case ' 2 ':
count[ 1]++;
break;
case ' 3 ':
count[ 2]++;
break;
case ' 4 ':
count[ 3]++;
break;
case ' 5 ':
count[ 4]++;
break;
case ' 6 ':
count[ 5]++;
break;
case ' 7 ':
count[ 6]++;
break;
case ' 8 ':
count[ 7]++;
break;
case ' 9 ':
count[ 8]++;
break;
}
}
for ( int i = 0; i < count.Length; i++)
{
Console.WriteLine( " 含有的数字 {0} 的个数是:{1} ", i + 1, count[i]);
}
#endregion
Console.ReadKey();
}
}
不过,这种方法有两个缺点就是,如果用户输入的不是数字(如字母或符号等),程序会提示错误,并退出;再者,也会统计出用户没有输入过的数字的个数为0个,如果某些时候不想知道没有输入的数字的个数,这种解法很不合适,而且代码修改起来也很复杂。
用Dictionary来解
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入数字");
string numbers = Console.ReadLine();
//创建集合 键 为数字 char类型 值为每个数字出现的次数 int类型
Dictionary<char, int> dict = new Dictionary<char, int>();
//将数字字符串转换为单个字符数组
char[] chs = numbers.ToCharArray();
for (int i = 0; i < chs.Length; i++)
{
//判断是否是数字 用到char的isnumber方法
if (char.IsNumber(chs[i]))
{
//如果键中已含有该数字,则将其对应的值+1,否则不存在,加入键中 值为1
if (!dict.ContainsKey(chs[i]))
{
//将每个数字字符作为键 存入 键值对中, 值初始为1
dict.Add(chs[i], 1);
}
else
{
//值+1
dict[chs[i]]++;
}
}
}
//循环遍历键值对输出
foreach (KeyValuePair<char,int> item in dict)
{
Console.WriteLine("数字:{0}出现了{1}次。",item.Key,item.Value);
}
Console.ReadKey();
本文链接:https://my.lmcjl.com/post/8235.html
4 评论