Базовая информация
Язык программирования : C # (C Sharp)
Тип программы : Консольное приложение .Net Core 2.0
IDE : Сообщество Visual Studios 2017 v15.8.7
Информация о программе
Название программы : Счетчик календаря
Основы моей программы : Пользователь вводит данные за месяц и сообщает им, сколькодни в этом месяце.Пользователь может свободно вводить любую известную комбинацию названия месяца / имени (например, март, март, мар, мар, март, мар., 03 или 3).
Выполнение моих программ : Программа запрашивает у пользователя месяц, и он вводит его. Затем программа проверяет, что пользователь ввел в метод с именем MonthDatabase (), с помощью String Array.Если он совпадает, отображается месяц, в котором они набрали, и сколько дней у него есть.
Информация о выпуске
Вопрос о программе : Моя главная проблема - найти способ проверитьчто пользователь ввел с тем, что находится в массиве строк.Я пробовал переключатели и различные операторы if, но большинство из них дают мне ошибку (я не буду публиковать все из них).Я также попробовал это, используя словарь и список.Каждый выдавал свои ошибки.Поэтому я вернулся к использованию строкового массива и после многих поисков и проб разных вещей, которые просто не работали.Я даже пытался гуглить то, что я искал (например, проверять ввод пользователя с помощью массива строк), но безрезультатно.В настоящее время я получаю сообщение об ошибке:
Делегирование метода экземпляра не может иметь значение null 'this'.
Теперь я новичок в C # (и программировании в целом) Iмог только предположить, что он хочет, чтобы я указал, что проверять в массиве строк, чтобы сопоставить его с вводом пользователя.Я попробовал что-то вроде:
Console.Write("Enter a month?: ");
string userMonth = (Console.ReadLine());
if (userMonth == mData(1, 1)) //Compare user input to MonthDataBase
{
Console.WriteLine("You typed a word found in the datatbase.");
}
else
{
Console.WriteLine("You didn't type a word in the datatbase.");
}
И
Console.Write("Enter a month?: ");
string userMonth = (Console.ReadLine());
if (userMonth == mData[1, 1]) //Compare user input to MonthDataBase
{
Console.WriteLine("You typed a word found in the datatbase.");
}
else
{
Console.WriteLine("You didn't type a word in the datatbase.");
}
Думая, что это посмотрит на строку в этой позиции и совпадет с ней, но ясно, что я ошибаюсь в этом предположении.Я даже пытался в Google посмотреть, есть ли способ просто сопоставить то, что пользователь набрал, со всем массивом строк, но ничего не нашел.
Я потратил неделю, пытаясь выяснить это, и решил прийтиздесь, чтобы увидеть, если кто-нибудь может указать мне в правильном направлении.Мне нравится идея его изучения, поэтому, если возможно, нет прямых ответов, как «делай это», и это сработает.Может быть, пример (другой, но близкий к тому, что я пытаюсь сделать) или «прочитайте это», и это должно помочь вам.
Код
using System;
using System.Collections.Generic;
using System.Linq;
namespace Calendar_Counter
{
class Program
{
public static string mData { get; private set; } //Use mData in any method.
static void Main(string[] args)
{
Header(); //Call Header Method & display
Menu(); //Call Menu Method & display
CCDatatbase(); //Call Calendar Counter Database Method, execute & display.
//Console.WriteLine("Hello World!");
ExitProgram(); //Call exit program, execute & display
}
static void Header()
{
Console.Clear(); //Clear console buffer & console window of display information
Console.Write("--------------------\n| Calendar Counter |\n--------------------\n"); //Display Header text
}
static void Menu()
{
//ADD menu options once basic program is working!!
Console.WriteLine(); //Space
Console.Write("MENU: //ADD menu options once basic program is working!!");
Console.WriteLine("\n"); //Double Space
}
static void CCDatatbase()
{
Console.Write("Enter a month?: ");
string userMonth = (Console.ReadLine());
if (userMonth.Any(mData.Contains)) //Compare user input to MonthDataBase
{
Console.WriteLine("You typed a word found in the datatbase.");
}
else
{
Console.WriteLine("You didn't type a word in the datatbase.");
}
}
public static string[,] MonthDataBase() //Month Database
{
//Check user input with Array List.
string[,] mData = new string[12, 8]
{
{ "January", "january", "Jan", "jan", "Jan.", "jan.", "1", "01" }, //If user types 1-8 display corisponding message in CCDatatbase()
{ "January", "january", "Feb", "feb", "Feb.", "feb.", "2", "02" },
{ "March", "march", "Mar", "mar", "Mar.", "mar.", "3", "03" },
{ "April", "april", "Apr", "apr", "Apr.", "apr.", "4", "04" },
{ "May", "may", "May", "may", "May", "may", "5", "05" },
{ "June", "june", "Jun", "jun", "Jun.", "jun.", "6", "06" },
{ "July", "july", "Jul", "jul", "Jul.", "jul.", "7", "07" },
{ "August", "august", "Aug", "aug", "Aug.", "aug.", "8", "08" },
{ "September", "september", "Sep", "sep", "Sep.", "sep.", "9", "09" },
{ "October", "october", "Oct", "oct", "Oct.", "oct.", "10", "10" },
{ "November", "november", "Nov", "nov", "Nov.", "nov.", "11", "11" },
{ "December", "december", "Dec", "dec", "Dec.", "dec.", "12", "12" }
};
return mData;
}
static void ExitProgram()
{
//REPLACE later with an actual exit option in menu!!
Console.Write("EXIT: //REPLACE later with an actual exit option in menu!!\n\n");
//Prevent Debugging test from closing.
Console.Write("Press any key to Exit...");
Console.ReadLine();
}
}
}