Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Хочу сделать консоль на с# помогите

Никита Селетков Знаток (426), на голосовании 3 дня назад
Хочу сделать консоль на с# помогите пж. Мне не нравится как построен мой код, объясните мне как правильнее и компактнее


using System;
using System.Security .Cryptography.X509Certificates;


namespace project
{
class Program
{


public static void Register_User()
{
Console.Write("Введите никнейм >> ");
string user = Console.ReadLine();

Random rnd = new Random();
int User_num = rnd.Next (1, 5000);
string User_number = "User" + User_num;
string mesto = ("C:/" + User_number + "/" + user + ">> ");
Console.WriteLine(mesto);
}

public static void help()
{
string mesto = ("C:/" + User_number + "/" + user + ">> ");
Console.WriteLine(mesto);

Console.WriteLine("\nВведите -help для вызова помощи\n");
Console.Write(mesto);
string help_a1 = Console.ReadLine();
if (help_a1 == "-help")
{
Console.WriteLine("-ip-config ПРИ ВВОДЕ ВЫВОДИТ ИНФОРМАЦИЮ О ДАННОМ IP АДРЕСА\n-exit ПРИ ВВОДЕ ОСУЩЕСТВЛЯЕТ ВЫХОД ИЗ КОНОСИ");
}
}


public static void work()
{
Console.Write(mesto);
string vvod = Console.ReadLine();

for (vvod == command)
{
Console.Write(mesto);
string vvod = Console.ReadLine();

if (vvod = command)
}

}

public static void Main(string[] args)
{
Register_User();
help();
Console.ReadLine();
}
}
}
Голосование за лучший ответ
speexz Мыслитель (7478) 1 месяц назад
Ваш код содержит несколько ошибок, из-за которых он не компилируется и работает некорректно. Кроме того, его структура может быть улучшена. Рассмотрим основные проблемы и предложим более правильный и компактный подход к реализации консоли.

### Основные проблемы:
1. **Переменные `User_number` и `user` недоступны в других методах**:
Они объявлены внутри методов, а потому недоступны за их пределами. Нужно передавать данные между методами или использовать свойства класса.

2. **Некорректное использование цикла и условий в `work`**:
Конструкция `for (vvod == command)` некорректна. В цикле `for` ожидается три выражения (инициализация, условие и инкремент/декремент).

3. **Дублирование кода `mesto`**:
Переменная `mesto` генерируется несколько раз, хотя её можно вычислить один раз и использовать повторно.

4. **Использование недопустимых синтаксических конструкций**:
Например, `if (vvod = command)` вместо `if (vvod == command)`.

---

### Оптимизированный код
Ниже пример исправленного и улучшенного кода:
 using System;

namespace Project
{
class Program
{
private static string UserName;
private static string UserPath;

// Регистрация пользователя
public static void RegisterUser()
{
Console.Write("Введите никнейм >> ");
UserName = Console.ReadLine();

Random rnd = new Random();
int userNumber = rnd.Next(1, 5000);
UserPath = $"C:/User{userNumber}/{UserName}";
Console.WriteLine($"Добро пожаловать, {UserName}!");
Console.WriteLine($"Ваш путь: {UserPath}");
}

// Вывод подсказки
public static void ShowHelp()
{
Console.WriteLine("\nСписок доступных команд:");
Console.WriteLine("-help Показать справку");
Console.WriteLine("-exit Выйти из программы");
}

// Основная работа консоли
public static void Work()
{
string prompt = $"{UserPath}>> ";
while (true)
{
Console.Write(prompt);
string input = Console.ReadLine();

switch (input)
{
case "-help":
ShowHelp();
break;
case "-exit":
Console.WriteLine("Выход из программы...");
return;
default:
Console.WriteLine($"Неизвестная команда: {input}. Введите -help для справки.");
break;
}
}
}

public static void Main(string[] args)
{
RegisterUser();
ShowHelp();
Work();
}
}
}

---

### Основные улучшения:
1. **Использование полей класса**:
Переменные `UserName` и `UserPath` сделаны полями класса (`static`), чтобы они были доступны во всех методах.

2. **Минимизация дублирования кода**:
Путь (`prompt`) создаётся один раз и используется везде.

3. **Переработанная логика команд**:
Введён цикл `while` и оператор `switch` для обработки ввода пользователя.

4. **Чёткая структура**:
Каждый метод выполняет одну задачу:
- `RegisterUser` — регистрация пользователя.
- `ShowHelp` — вывод справки.
- `Work` — основная работа с командами.
Похожие вопросы