2016-08-19 1 views
0

У меня есть пользователь, вводящий день (понедельник) и номер недели, чтобы найти значение в массиве. Однако, чтобы получить вывод массива, мне нужны номера строк и столбцов. Номер строки может быть получен из пользовательского ввода, 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; 

} 
+0

Можете ли вы объяснить, почему _Value = (int) ClockInfoFromSystem.DayOfWeek; _ не работает? – Steve

+0

@ Попробуйте преобразование до этого, что приведет к ошибке. Поскольку пользователь вводит что-то как строчную команду, я попытался преобразовать строку в int, что в случае с «Понедельником» действительно не работает. Я пытаюсь понять, есть ли альтернатива этому. – Anon

+0

Дубликат объясняет, как преобразовать строку (ваш ввод пользователя) в перечисление (DayOfWeek). Тогда ваш код, чтобы получить целое число, должен работать. Я также должен извиниться перед пользователем, который уже указывал на дубликат выше. Ты был прав. – Steve

ответ

1

Я предлагаю писать такой метод, как dayToInt(String day), который реализуется с помощью простого switch оператора или if...else if...else цепи.

+0

Этот ответ выглядит правильным ответом на меня, преобразование в перечисление было бы рискованным и ненадежным (особенно если, как упоминалось выше, требуются другие языки) – Slicc

+0

Есть ли для этого учебник или msds ресурс? Кажется, я не могу найти его. – Anon

+0

@ Я не сомневаюсь, что в этом есть учебник для этой проблемы. Это довольно простой C#. Любой общий учебник или учебник по C# объясняет, как писать методы и как работают 'switch' и' if ... else'. –

Смежные вопросы