Правильно отобразить номер дня из массива дней - PullRequest
0 голосов
/ 09 ноября 2019

Пользовательский день ввода понедельника должен возвращаться с «1», а целочисленный ввод «1» должен возвращаться с днем ​​«понедельник». Прямо сейчас ноль является представителем понедельника. Насколько я понимаю, мне нужно было добавить 1 к нему, следовательно, +1, как показано ниже, но это только усложнило ситуацию. Любой вклад приветствуется.

 string[] days = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };

        public Form1()
        {
            InitializeComponent();
        }


        private void BtnGetNum_Click(object sender, EventArgs e)
        {
            string dayName = (txtDayName.Text);
            int dayIndex, dayNumber;
            dayIndex = Array.IndexOf(days, dayName);    
            lblNumOut.Text = dayIndex.ToString();                                        
        }

        private void BtnGetDay_Click(object sender, EventArgs e)
        {
            int dayNumber;
            if (int.TryParse(txtDayNum.Text, out dayNumber) == false || dayNumber < 1 || dayNumber > 7)
            {
                MessageBox.Show("Must be a valid number from 1 to 7.");

            }
            lblNameOut.Text = (days[dayNumber +1]);
        }

1 Ответ

0 голосов
/ 09 ноября 2019

Должно быть что-то вроде:

private void BtnGetNum_Click(object sender, EventArgs e)
{
    string dayName = txtDayName.Text;
    int dayIndex;
    //To find the index of the day ignoring the case, so the input can be monday, Monday, mOnDaY...etc.
    dayIndex = Array.FindIndex(days, a => a.Equals(dayName, StringComparison.CurrentCultureIgnoreCase));
    //Check if the input is a valid day name:
    if(dayIndex == -1)
    {
        MessageBox.Show("Enter correct day name.");
        return;
    }
    lblNumOut.Text = (dayIndex + 1).ToString();
}

private void BtnGetDay_Click(object sender, EventArgs e)
{
    int dayNumber;
    if (!int.TryParse(txtDayNum.Text, out dayNumber) || dayNumber < 1 || dayNumber > 7)
    {
        MessageBox.Show("Must be a valid number from 1 to 7.");
        return;
    }
    //0-based index. When the input say = 3, that means the value position in the array is 3 - 1 = 2.
    lblNameOut.Text = days[dayNumber - 1];
}

Удачи

...