У меня есть пользователь, вводящий день (понедельник) и номер недели, чтобы найти значение в массиве. Однако, чтобы получить вывод массива, мне нужны номера строк и столбцов. Номер строки может быть получен из пользовательского ввода, 1,2 и т. Д. Однако часть, в которую они вводят понедельник, вторник и т. Д., Немного сложнее. Есть ли способ конвертировать понедельник вторник и т.д. в целое число (1,2), чтобы я мог использовать это, чтобы найти элемент массива?Как конвертировать «понедельник» в целое число 1 и «вторник» на 2 и т. Д. Вплоть до пятницы?
Я пробовал этот метод, но он не работает. Очевидно, что преобразование значения в int не работает из-за того, что «понедельник» не является числом. Есть ли альтернативный способ сделать это?
int Value = Convert.ToInt32(value);
DateTime ClockInfoFromSystem = DateTime.Now;
Value = (int)ClockInfoFromSystem.DayOfWeek;
Это остальная часть кода, если вам это нужно
private void AddToArray()
{
txtOutput.Text = "Filling the array with user input..." + "\r\n\r\n";
String value;
int num;
for (int week = 0; week < productsArray.GetLength(0); week++)
{
for (int day = 0; day < productsArray.GetLength(1); day++)
{
value = Microsoft.VisualBasic.Interaction.InputBox("Enter Value for Day " + day + " of Week " + week, "Enter Value");
try
{
while (!(int.TryParse(value, out num)))
{
MessageBox.Show("Not a valid number, try again.");
value = Microsoft.VisualBasic.Interaction.InputBox("Enter a Number", "Enter Number");
}
}
catch (Exception)
{
MessageBox.Show("Value entered is not in a valid format");
}
productsArray[week, day] += int.Parse(value);
}
}
txtOutput.Text += "The product allocation is as follows:" + "\r\n\r\n";
}
private void Array()
{
txtOutput.Text += "\tMon\tTue\tWed\tThu\tFri\r\n";
for (int week = 0; week < productsArray.GetLength(0); week++)
{
txtOutput.Text += "Week " + (week + 1) + "\t";
for (int day = 0; day < productsArray.GetLength(0); day++)
{
txtOutput.Text += productsArray[week, day] + "\t";
}
txtOutput.Text += "\r\n";
}
txtOutput.Text += "\r\n" + "Retrieve products completed on a specific day." + "\r\n";
String value = Microsoft.VisualBasic.Interaction.InputBox("Enter Day", "Enter Day", "Monday");
int num;
String value2 = Microsoft.VisualBasic.Interaction.InputBox("Enter Week", "Enter Week");
try
{
while (!(int.TryParse(value2, out num)))
{
MessageBox.Show("Not a valid number, try again.");
value2 = Microsoft.VisualBasic.Interaction.InputBox("Enter Week", "Enter Week");
}
}
catch (Exception)
{
MessageBox.Show("Value entered is not in a valid format");
}
int Value2 = Convert.ToInt32(value2);
int Value = Convert.ToInt32(value);
DateTime ClockInfoFromSystem = DateTime.Now;
Value = (int)ClockInfoFromSystem.DayOfWeek;
var output = productsArray[Value2, Value];
txtOutput.Text += "Products completed on that day are: " + output;
}
Можете ли вы объяснить, почему _Value = (int) ClockInfoFromSystem.DayOfWeek; _ не работает? – Steve
@ Попробуйте преобразование до этого, что приведет к ошибке. Поскольку пользователь вводит что-то как строчную команду, я попытался преобразовать строку в int, что в случае с «Понедельником» действительно не работает. Я пытаюсь понять, есть ли альтернатива этому. – Anon
Дубликат объясняет, как преобразовать строку (ваш ввод пользователя) в перечисление (DayOfWeek). Тогда ваш код, чтобы получить целое число, должен работать. Я также должен извиниться перед пользователем, который уже указывал на дубликат выше. Ты был прав. – Steve