c# - 通过类传递用户输入并将其显示在控制台中
问题描述
我正在尝试创建一个 C# 控制台应用程序,如果用户按下一个数字,它将要求他们添加任务、查看当前任务、删除任务。我创建了我的第一个类来“添加任务”只是获取用户输入,然后在主方法中调用该类通过它运行用户输入,有什么建议吗?
class addTask
{
public string UserInput { get; set; }
public override string ToString() => UserInput;
}
...
System.Console.WriteLine("Please select what you would like to do");
System.Console.WriteLine("1. Add A Task");
System.Console.WriteLine("2. Remove A Task");
System.Console.WriteLine("3. Update A Task");
System.Console.WriteLine("4. View Task");
int num = Convert.ToInt32(Console.ReadLine());
if (num == 1)
{
System.Console.WriteLine("Please enter a new Task");
string input = Console.ReadLine();
while (input != Console.ReadLine())
{
// a.getUserInput.ToString();
System.Console.WriteLine($"New Task: {a}");
break;
}
}
Console.ReadKey();
解决方案
你可以使用这个:
using System;
using System.Collections.ObjectModel;
namespace C_TaskManager
{
public class UserTask
{
public UserTask(string Description)
{
this.UserInput = Description;
}
public string UserInput { get; set; }
public override string ToString()
{
return UserInput;
}
}
public class TaskManager
{
public ObservableCollection<UserTask> UserTasks { get; set; } = new ObservableCollection<UserTask>();
}
}
namespace C_TaskManager
{
internal class Program
{
private static string ReadTextLineFromConsole()
{
return Console.ReadLine();
}
private static int ReadInt32FromConsole()
{
try
{
return Convert.ToInt32(Console.ReadLine());
}
catch (Exception)
{
return -1;
}
}
private static TaskManager tm = new TaskManager();
private static void Main(string[] args)
{
int num = 0;
do
{
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();
Console.WriteLine("Please select what you would like to do");
Console.WriteLine("1. Add A Task");
Console.WriteLine("2. Remove A Task");
Console.WriteLine("3. Update A Task");
Console.WriteLine("4. View Task");
Console.WriteLine("5. List Tasks");
Console.WriteLine("6. EXIT");
Console.WriteLine("---------------------------------------");
num = ReadInt32FromConsole();
switch (num)
{
case -1:
Console.WriteLine("Invalid entry. Try again.");
break;
case 1:
{
Console.WriteLine("Please enter a new Task:");
var input = ReadTextLineFromConsole();
var ut = new UserTask(input);
tm.UserTasks.Add(ut);
Console.WriteLine($"New Task: {ut.ToString()}");
}
break;
case 2:
{
Console.WriteLine("Remove Task by index position:");
var input = ReadInt32FromConsole();
tm.UserTasks.RemoveAt(input);
Console.WriteLine("Task removed");
}
break;
case 3:
{
Console.WriteLine("Update Task by index position:");
var input = ReadInt32FromConsole();
// TODO: check if input is in range of UserTasks
var selectedTask = tm.UserTasks[input];
Console.WriteLine("Please enter a new Task Description:");
var NewDescription = ReadTextLineFromConsole();
selectedTask.UserInput = NewDescription;
Console.WriteLine("Task updated");
}
break;
case 4:
{
Console.WriteLine("View Task by index position:");
var input = ReadInt32FromConsole();
var selectedTask = tm.UserTasks[input];
Console.WriteLine(selectedTask.UserInput);
}
break;
case 5:
{
Console.WriteLine("List Tasks:");
foreach (var ut in tm.UserTasks)
{
Console.WriteLine(" * " + ut.UserInput);
}
}
break;
}
Console.WriteLine("");
Console.WriteLine("////////////////////////////////////////////////////");
Console.WriteLine("Press a key to return to main menu...");
Console.ReadKey();
} while (num != 6);
}
}
}
推荐阅读
- python - 如何使用 python 在网站上显示 Matlab 数字?
- facebook - 当用户单击共享按钮时,是否有任何方法可以获取 facebook 用户信息
- google-sheets - 合并几张表格后,Google表格过滤汇总表格
- oop - Lua oop 静态对象值
- swift - 如果给定的日期格式发生变化,如何格式化日期字符串
- php - 带有时区的strtotime在php中变得不正确
- linux - 如何将 Make 从 4.2.1 降级到 3.82?
- matlab - 具有简单系数方程的维数问题
- homebrew - 自制程序抛出警告:“不推荐调用depends_on:x11!改用depends_on特定的X11公式(e)”
- docker - kibana,elasticsearch 7.2 本地设置(无活动连接)