首页 > 解决方案 > 检查所有字母是小写还是大写

问题描述

基本上我只是想检查用户输入是全部大写还是小写。目前我的问题是代码每次迭代都返回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;
                }
            }

        }
    }
}

标签: c#for-loop

解决方案


我不知道 C#,但这是一种方法。只需检查第一个字符是否大写所有其他字符都应为大写或打印错误。如果第一个字符是小写的,那么所有其他字符都应该是小写的,否则打印为 false。然后,如果您到达程序的末尾(没有返回),您可以查看它是全大写还是全小写并相应地打印。

bool isUpper = char.isUpper(characters[0]);
for(int i = 0; i < characters.Length; i++) {
    if(isUpper != char.isUpper(characters[i])) {
        Console.WriteLine("False");
        return;
    }
}
if(isUpper) {Console.WriteLine("True1");}
else {Console.WriteLine("True2");}

推荐阅读