Позвольте мне начать с того, что я новичок в C#.
В настоящее время я делаю свое первое приложение командной строки, которое в своем текущем состоянии может сделать две вещи. Одним из них является калькулятор, для которого мне нужно больше знаний, чтобы на самом деле заставить его работать, а другой - строковый капитализатор.
У меня есть string nameCapInput = Console.Readline()
, который принимает пользовательский ввод, который затем анализируется чтобы убедиться, что никакие цифры не разрешены:
using System;
using System.Linq;
namespace First_Console_Project
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("My first ever console application - 2020/2/26\n\n\n");
programSel:
Console.WriteLine("What do you want to do?\n");
Console.WriteLine("1. Calculate Numbers \n2. Capitalize Letters/Strings");
Console.WriteLine("Input your desired action:");
var inputVar = Console.ReadLine();
switch (inputVar)
{
case "1":
//Calculator code goes here
Console.WriteLine("Number 1 succeeded, opening calculator... Stand by");
Console.WriteLine("Calulator Loaded.");
Console.WriteLine("Doesn't work right now. Type \"exit\" to get back to the \"what do you want to do\" page.");
//Code goes here when I have learned the proper methods
calcInput:
var calcInput = Console.ReadLine();
if (calcInput == "exit")
{
goto programSel;
} else
{
Console.WriteLine("Unknown command. Type \"exit\" to get back to the \"what do you want to do\" page.");
goto calcInput;
}
case "2":
Console.WriteLine("Loading string capitalizer...");
Console.WriteLine("Type any string made of letters only without spaces, because if you use spaces, the program will exit. The output will make them all uppercase. Type \"exit\" to get back to the \"what do you want to do\" page.");
inputCap:
string nameCapInput = Console.ReadLine();
bool containsInt = nameCapInput.Any(char.IsDigit);
bool isMadeOfLettersOnly = nameCapInput.All(char.IsLetter);
if (nameCapInput == "exit")
{
goto programSel;
}
else if (containsInt)
{
Console.WriteLine("You can't capitalize numbers. Use letters only. Try again.");
goto inputCap;
}
else if (isMadeOfLettersOnly)
{
string upper = nameCapInput.ToUpper();
Console.WriteLine($"The uppercase version of your entered text is: {upper}");
goto inputCap;
}
break;
}
}
}
}
Теперь все работает нормально и заполняет все, что я положил в него , за исключением строк с пробелами в них. Когда я набираю строку с пробелами, программа просто завершает работу с кодом 0. Я пока не очень хорошо разбираюсь в C#, поэтому я не знаю, где отсюда go. Любая помощь приветствуется.
Каждый раз, когда я узнаю что-то новое в C#, я пытаюсь внедрить это в свои проекты, чтобы я мог научиться реализовывать это, чтобы знать, когда и как использовать то, что я изучил , Это пример для этого.
РЕДАКТИРОВАТЬ: Добавил остальную часть кода. Спасибо всем большое. Здесь я усвоил две вещи:
goto
- это вредная привычка - Мне абсолютно нужно начать учиться отлаживать свой собственный код.