我试图确定"句子"的第一个字符。字符串是资本与否。程序运行正常,但测试运行会给出数组索引超出范围的错误。我无法理解这个问题。
public class CapitalOrNot
{
public static void Main()
{
string sentence = "Asdafasda";
string UpOrLow = UpperOrLower(sentence);
Console.WriteLine("First char is " + UpOrLow);
}
public static string UpperOrLower(string mj)
{
if (char.IsUpper(mj[0]))
{
mj = "upper";
}
else mj = "lower";
return mj;
}
}
答案 0 :(得分:5)
你应该检查字符串是否为空:
public static string UpperOrLower(string mj)
{
if (string.IsNullOrEmpty(mj))
return "bad input";
return char.IsUpper(mj[0]) ? "upper" : "lower";
}
答案 1 :(得分:1)
使用空条件运算符的解决方案:
public static string UpperOrLower(string str)
{
return (str?.Any()).GetValueOrDefault() ? (Char.IsUpper(str.First()) ? "upper" : "lower") : "bad input";
}
答案 2 :(得分:0)
这个怎么样?
public class CapitalOrNot
{
public static void Main()
{
string sentence = "Asdafasda";
if(sentence.Length > 0 && sentence != null)
{
string UpOrLow = UpperOrLower(sentence);
Console.WriteLine("First char is " + UpOrLow);
}
else
{
Console.WriteLine("You did not input a sentence");
}
}
public static string UpperOrLower(string mj)
{
if (char.IsUpper(mj[0]))
{
mj = "upper";
}
else mj = "lower";
return mj;
}
}
答案 3 :(得分:0)
当您调用UpperOrLower而没有任何值时会出现问题,它会引发异常,以解决您可以执行类似下面代码的操作。
public static string UpperOrLower(string mj)
{
if (string.IsNullOrEmpty(mj))
{
if (char.IsUpper(mj[0]))
{
mj = "upper";
}
else mj = "lower";
}
else
{
mj = "empty";
}
return mj;
}
问候。