【发布时间】:2021-08-15 22:43:42
【问题描述】:
基本上我只是想检查用户输入是全部大写还是小写。 目前我的问题是代码每次迭代都返回true1或true2,如果输入都是大写的,那么第一个for循环会进入下一个循环,因为没有一个字母是小写的,所以返回false。对不起,如果这个问题格式不正确,我是新手。
namespace CheckifSameCase
{
class Program
{
static void Main(string[] args)
{
//Initialize user input as var "input".
string str = Console.ReadLine();
char[] characters = str.ToCharArray();
//This for loop iterates through the user input and checks if all letters are uppercase.
//if not all letters are uppercase then the loop breaks to the next loop.
for (int i = 0; i < characters.Length; i++)
{
if (char.IsUpper(characters[i]))
{
Console.WriteLine("True1");
}
else
{
break;
}
}
//This for loop checks for lowcase letters and returns false if all letters aren't lowercase.
for (int i = 0; i < characters.Length; i++)
{
if (char.IsLower(characters[i]))
{
Console.WriteLine("True2");
}
else
{
Console.WriteLine("False");
break;
}
}
}
}
}
【问题讨论】:
-
@oliverr 他们想检测它是全大写、全小写还是混合,所以这并不能真正回答他们的问题。似乎他们了解如何根据自己的代码检测所有大写字母
-
@OwenKuhn
str.All(c => char.IsUpper/IsLower(c))和str.All(c => char.IsLower(c))做 the job。当然,如果我们需要这样的事情,一个优化的手工循环来标记/取消标记 allLower 和 allUpper 也可以不用解析两次字符串......我没有时间写它。我误解了这个问题吗?