在使用C#给出的字符串中打印第一个重复字符。运行此获取错误消息时。
无法隐式转换类型' bool'到' char'
public class Program {
public static void Main (string[] args) {
string str = "fafaffaa";
char[] ArrChar = str.ToCharArray ();
Console.WriteLine ("First Repeating char :", MatChar (ArrChar));
}
public static char MatChar (char[] input) {
HashSet<char> HasChar = new HashSet<char> ();
for (int i = 0; i < input.Length; i++) {
char c = input[i];
if (HasChar.Contains (c)) return c;
else return HasChar.Add (c);
}
return '\0';
}
}
答案 0 :(得分:1)
不要在其他情况下返回。此外,您忘记了格式字符串
中的占位符public static void Main(string[] args)
{
string str = "fafaffaa";
char[] ArrChar = str.ToCharArray();
Console.WriteLine("First Repeating char : {0}", MatChar(ArrChar));
}
public static char MatChar(char[] input)
{
HashSet<char> HasChar = new HashSet<char>();
for (int i = 0; i < input.Length; i++)
{
char c = input[i];
if (HasChar.Contains(c))
return c;
else
HasChar.Add(c);
}
return '\0';
}
答案 1 :(得分:1)
你有其他条件的回报。我认为你的意图是你只想添加到HashSet。
if (HasChar.Contains(c)) return c; else HasChar.Add(c);
答案 2 :(得分:0)
Getting this error because HasChar.Add() return bool. It return true if element added else false. So only getting this error, So use List instead of HashSet.
Can rewrite following
public class Program
{
public static void Main(string[] args)
{
string str = "faffaa";
char[] ArrChar = str.ToCharArray();
MatChar(ArrChar);
Console.Read();
}
public static void MatChar(char[] input)
{
List<char> HasChar = new List<char>();
for (int i = 0; i < input.Length; i++)
{
char c = input[i];
if (HasChar.Contains(c))
{
Console.WriteLine("First repeating character: {0}", c);
break;
}
else
HasChar.Add(c);
}
}
}