大家好,本人初学C#,遇到一个问题,请大家指教一下!
题目是:输入一串字符,统计各字符出现的次数。
以下是我写的代码:
using System;namespace 字符串统计
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
static int Count(string s,string word)
{
int i = 0,j = 0, x = 0;
while(x >= 0)
{
x = s.IndexOf(word,j);
j = x + word.Length;
if(x >= 0)
{
i++;
}
}
return i;
}
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Console.WriteLine("请输入字符串:");
string str = Console.ReadLine();
for(int i = 0;i < str.Length;i++)
{
int m = Count(str,str.Substring(i,1));
Console.WriteLine("{0}出现的次数是{1}次:)",str.Substring(i,1),m);
}
}
}
}
有点小bug 如果我输入abcda
输出结果是:
a出现的次数是2次:)
b出现的次数是1次:)
c出现的次数是1次:)
d出现的次数是1次:)
a出现的次数是2次:)
两个a重复了,a出现的次数是2次:) 这句话出现了2次
请问怎么解决这个问题,谢谢指教
题目是:输入一串字符,统计各字符出现的次数。
以下是我写的代码:
using System;namespace 字符串统计
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
static int Count(string s,string word)
{
int i = 0,j = 0, x = 0;
while(x >= 0)
{
x = s.IndexOf(word,j);
j = x + word.Length;
if(x >= 0)
{
i++;
}
}
return i;
}
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Console.WriteLine("请输入字符串:");
string str = Console.ReadLine();
for(int i = 0;i < str.Length;i++)
{
int m = Count(str,str.Substring(i,1));
Console.WriteLine("{0}出现的次数是{1}次:)",str.Substring(i,1),m);
}
}
}
}
有点小bug 如果我输入abcda
输出结果是:
a出现的次数是2次:)
b出现的次数是1次:)
c出现的次数是1次:)
d出现的次数是1次:)
a出现的次数是2次:)
两个a重复了,a出现的次数是2次:) 这句话出现了2次
请问怎么解决这个问题,谢谢指教
using System;
using System.Text;namespace 字符串统计
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
static int Count(string s,string word)
{
int i = 0,j = 0, x = 0;
while(x >= 0)
{
x = s.IndexOf(word,j);
j = x + word.Length;
if(x >= 0)
{
i++;
}
}
return i;
}
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Console.WriteLine("请输入字符串:");
string str = Console.ReadLine();
StringBuilder sb = new StringBuilder();
for(int i = 0;i < str.Length;i++)
{
int m = Count(str,str.Substring(i,1));
if(!sb.ToString().Contains(str.Substring(i,1)))
{
Console.WriteLine("{0}出现的次数是{1}次:)",str.Substring(i,1),m);
}
sb.Append(str.Substring(i,1));
}
}
}
}
string str = Console.ReadLine();
for (int i = 0; i < str.Length; i++)
{
int m = Count(str, str.Substring(i, 1));
if (i==0 || str.Substring(0,i).IndexOf( str.Substring(i, 1),0) < 0)
{
Console.WriteLine("{0}出现的次数是{1}次:)",str.Substring(i,1),m);
}
}
怎么弄的呀?