求一任意字符串中不同字符的个数,用C#编写出问题啦,麻烦各位大神看看,谢谢啦

下面是我写的程序,麻烦各位大神帮忙看哈怎么修改才能得出正确结果usingSystem;usingSystem.Collections.Generic;publicclas... 下面是我写的程序,麻烦各位大神帮忙看哈怎么修改才能得出正确结果
using System;
using System.Collections.Generic;

public class Test72
{
public static void Main()
{
Console.WriteLine("请输入一段字符串:");
string str = Console.ReadLine();//asss
List<char> list = new List<char>();
for (int i = 0; i < str.Length; i++)
{
list.Add(str[i]);
}
Console.WriteLine("集合里元素数目:" + list.Count);
for (int i = 0; i < list.Count; i++)
{
char c = list[i];
Console.WriteLine("第{0}个字符是{1}", i, c);
for (int j = i+1 ; j < list.Count; j++)
{
if (c ==list[j] )
{
list.Remove(list[j]);
Console.WriteLine("移除了"+list[j]);
Console.WriteLine("集合里剩余元素数目:" + list.Count);//集合的数目减小导致j<list.Count中的Count变小,最终第三个s无法移除
}
}
}
Console.WriteLine("不同字符数"+list.Count);
}
}
运行结果如图,出现的问题就是程序中加注释的地方,麻烦大神看看啊,在这先谢谢啦。。。
展开
 我来答
actonst
2012-04-10 · TA获得超过1.8万个赞
知道大有可为答主
回答量:8184
采纳率:80%
帮助的人:5235万
展开全部
不用list,直接用string的方法就可以。
static void Main(string[] args)
{
int cnt = 0;
Console.WriteLine("请输入一段字符串:");
string str = Console.ReadLine();
Console.WriteLine("集合里元素数目:" + str.Length);
while (str.Length > 0)
{
char s = str[0];
int sum = 0;
while (str.IndexOf(s) >= 0)
{
str = str.Remove(str.IndexOf(s), 1);
sum ++;
}
Console.WriteLine("第{0}个字符是{1},有{2}个", cnt, s, sum);
cnt++;
}
Console.WriteLine("不同字符数: " + cnt);
Console.ReadKey();
}
百度网友3722182
2012-04-10 · TA获得超过126个赞
知道小有建树答主
回答量:124
采纳率:66%
帮助的人:103万
展开全部
汗! 你第一个s移除以后 list里面的元素就只有3个了
而i在移除第一个s 然后再循环过来的时候就等于2
档i=2的时候 第一个for(i=2;2<3;i++)还是满足条件可以循环下去 所以显示第2个字符是s
但是下面一个for(j=i+1=2+1;3<3;j++)这个循环肯定是不满足的所以这个循环不满足 继续第一个for
这个时候i=3 那么第一个也不满足了 跳出整个循环 显示list.count
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dqjkwj1234
2012-04-10 · TA获得超过155个赞
知道小有建树答主
回答量:310
采纳率:0%
帮助的人:308万
展开全部
新建一个List ,将list中的数据copy过去,然后移除的时候移除新建的List
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式