如何为错误添加异常(try,catch)

时间:2015-09-07 22:48:10

标签: c#

这是我的一些控制台应用程序的代码。首先不能很好地工作的是方法SwitchLetters。当我输入一些字符串并按回车键时,每个字母都会转到新行。我不知道为什么。此外,我不知道如何在PrintBeforeSwitch和PrintAfterSwitch方法中显示大小写。和Exception如何使用try和catch获取一些异常以及使用哪个异常......

class Program
{
   static void Main(string[] args)
   {
        Console.WriteLine("Please input string");
        string input = Console.ReadLine();

        NewString ns = new NewString();
        StringOperation so = new StringOperation();

        ns.SwitchLetters(input);
        so.PrintBeforeSwitch(input);
        so.PrintAfterSwitch(input);   
    }
}

class NewString
{
    private string newString;

    public string _NewString
    {
        get
        {
            return newString;
        }
        set
        {
            newString = value;
        }
    }
    public void SwitchLetters(string newStr)
    {
        StringBuilder myString = new StringBuilder();

        for (int i = 0; i < newStr.Length; i++)
        {
            if (char.IsUpper(newStr, i))
                myString.Append(char.ToLower(newStr[i]));
            else if (char.IsLower(newStr, i))
                myString.Append(char.ToUpper(newStr[i]));
            else
                myString.Append(newStr[i]);

            Console.WriteLine(myString.ToString());
            Console.ReadLine();
            Console.WriteLine(newStr.ToUpper());
        }

    }

}

class StringOperation
{
    private string inputString;
    //public NewString newSrt;

    public string InputString
    {
        get
        {
            return inputString;
        }
        set
        {
            inputString = value;
        }
    }

    public int VocalNumber(string str)
    {
        int num; 
        return num = str.Count(a => "aeiouAEIOU".Contains(a));
    }

    public int SpaceNumber(string str)
    {
        int num;
        return num = str.Count(b => b == ' ');
    }

    public List<int> LowerUpperCaseLattersNumber(string str)
    {
        int counterLower = 0;
        int counterUpper = 0;
        List<int> counter = new List<int>();
        foreach (char value in str)
        {
            if (char.IsLower(value))
            {
                counterLower++;
            }
            else
            {
                counterUpper++;
            }
        }

        counter.Add(counterLower);
        counter.Add(counterUpper);
        Console.WriteLine("Number of small latters is: {0}", counterLower);
        Console.WriteLine("Number of big letters is: {0}", counterUpper);
        return counter;
    }

    public string SwitchVocals(ref string str)
    {
        string vocals = str.Replace("a", "x").Replace("e", "x").Replace("i", "x").Replace("o", "x").Replace("u", "x").Replace("A", "X").Replace("E", "X").Replace("I", "X").Replace("O", "X").Replace("U", "X");
        Console.WriteLine(vocals);
        return vocals;
    }

    public void PrintBeforeSwitch(string str)
    {

        Console.WriteLine(str);
        Console.WriteLine("Information about string:");
        Console.WriteLine("Number of vowels: {0}", VocalNumber(str));
        Console.WriteLine("Number of space: {0}", SpaceNumber(str));
        Console.WriteLine("Number of small latters is: {0}", LowerUpperCaseLattersNumber(str));
        Console.WriteLine("Number of big letters is: {0}", LowerUpperCaseLattersNumber(str));
        Console.ReadLine();
    }

    public void PrintAfterSwitch(string str)
    {
        SwitchVocals(ref str);
        Console.WriteLine("Information about string after switch:");
        Console.WriteLine("Number of vowels: {0}", VocalNumber(str));
        Console.WriteLine("Number of space: {0}", SpaceNumber(str));
        Console.WriteLine("Number of small latters is: {0}", LowerUpperCaseLattersNumber(str));
        Console.WriteLine("Number of big letters is: {0}", LowerUpperCaseLattersNumber(str));
        Console.ReadLine();
    }
 }

1 个答案:

答案 0 :(得分:0)

这是一个如何做例外的想法:

public void SwitchLetters(string newStr)
{
    try
    {

    }
    catch(Exception ex)
    {
        Console.WriteLine(ex.ToString());
        Console.ReadLine();//this stops the program so you can read the error
    }

}

我认为你有两条线交换过来.PrintBeforeSwitch和ns.SwitchLetters

static void Main(string[] args)
{
    Console.WriteLine("Please input string");
    string input = Console.ReadLine();

    NewString ns = new NewString();
    StringOperation so = new StringOperation();

    so.PrintBeforeSwitch(input);
    ns.SwitchLetters(input);
    so.PrintAfterSwitch(input);   
}

如果你使用Console.WriteLine("some string here");,它将完全按照它所说的做,写行。但是,您可以使用Console.Write("some string here");,它应该将文本/字符串添加到现有行。

您能否按照您的意思向我们提供更多信息“首先不能很好地工作的方法是SwitchLetters方法......”它该怎么办?它目前做什么?

要在下面的评论中解决您的问题,请移除Console.ReadLine()

public void SwitchLetters(string newStr)
{
    StringBuilder myString = new StringBuilder();

    for (int i = 0; i < newStr.Length; i++)
    {
        if (char.IsUpper(newStr, i))
            myString.Append(char.ToLower(newStr[i]));
        else if (char.IsLower(newStr, i))
            myString.Append(char.ToUpper(newStr[i]));
        else
            myString.Append(newStr[i]);

        Console.WriteLine(myString.ToString());
        //Console.ReadLine(); This line needs to be removed
        Console.WriteLine(newStr.ToUpper());
    }

}