求一任意字符串中不同字符的个数,用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);
}
}
运行结果如图,出现的问题就是程序中加注释的地方,麻烦大神看看啊,在这先谢谢啦。。。 展开
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);
}
}
运行结果如图,出现的问题就是程序中加注释的地方,麻烦大神看看啊,在这先谢谢啦。。。 展开
展开全部
不用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();
}
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();
}
展开全部
汗! 你第一个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
而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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
新建一个List ,将list中的数据copy过去,然后移除的时候移除新建的List
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询