2015-09-07 1 views
0

Это мой код для некоторых консольных приложений. Первое, что не очень хорошо работает, это метод 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(); 
    } 
} 
+0

Я предлагаю попробовать спросить меньше вопросов в одном посте, это может сделать его более удобным для пользователей, чтобы ответить и сделать его более легким для вас, чтобы спросить конкретный вопрос с текущими результатами и ожидаемыми результатами – BossRoss

+0

Нет проблем :-) Попробуйте прочитать здесь: http://stackoverflow.com/help/how-to-ask это поможет вам получить лучшие ответы в будущем. Добро пожаловать в StackOverflow – BossRoss

ответ

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 
    } 

} 

Я думаю, что у вас две строки местами вокруг so.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()); 
    } 

} 
+0

метод SwitchLetters нед для замены верхней буквы на малый и наоборот. Когда я ввожу некоторую строку ex. MYstriGN им нужно поменять местами в mySTRIng, и этот метод работает, но мне нужно нажимать клавишу ввода каждый раз, когда я просто хочу, когда я нажимаю один раз, чтобы поменять местами новую строку. – dozvola

+0

Я исправлю это. Кудрявые скобки были в неправильной линии. – dozvola