цикл if и else в C # - PullRequest
       3

цикл if и else в C #

0 голосов
/ 26 января 2012

Моя программа дает сбой при запуске некоторого кода, который я поместил между операторами if. Я знаю, почему слишком большая зависимость от одной задачи заключается в обнаружении числа <10 или> 9 Числа выше 9 работают, но число с одной цифрой вызовет исключение в этом месте:

            str = textBox23.Text;
            retString = str.Substring(1, 1);
            textBox22.Text = retString;

Я предполагаю, что if / else плохо написано, но я проверил с разными переменными, но это не сработало. Я действительно не знаю, что происходит Вот код:

private void button10_Click_1(object sender, EventArgs e)
{

    if (textBox23.Text == "" || Int32.Parse(textBox23.Text) > 9)

    {
        double L1 = double.Parse(textBox13.Text);
        double L2 = double.Parse(textBox16.Text);
        double wynik = L1 - L2;
        textBox23.Text = wynik.ToString();

        string str = null;
        string retString = null;
        str = textBox23.Text;
        retString = str.Substring(0, 1);
        textBox21.Text = retString;

        str = textBox23.Text;
        retString = str.Substring(1, 1);
        textBox22.Text = retString;

    }

    else if (textBox23.Text == "" || Int32.Parse(textBox23.Text)
    < 10)
    {
        double L1 = double.Parse(textBox13.Text);
        double L2 = double.Parse(textBox16.Text);
        double wynik = L1 - L2;
        textBox23.Text = wynik.ToString();

        string str = null;
        string retString = null;
        str = textBox23.Text;
        retString = str.Substring(0, 1);
        textBox21.Text = retString;

    }

Ответы [ 4 ]

2 голосов
/ 26 января 2012

вы меняете значение textbox23

textBox23.Text = wynik.ToString();

любой шанс, что это значение не будет длиной 2 символа, потому что последнее вы делаете

str = textBox23.Text;
retString = str.Substring(1, 1);

, так как подстрока является начальным символом, начинающимся с нуля, вы получите сообщение об ошибке, если оно не меньше 2 символов

0 голосов
/ 26 января 2012

Примерно так выглядит то, что вы пытаетесь достичь

    private void button10_Click_1(object sender, EventArgs e)
    {
        double box23;

        if (double.TryParse(textBox23.Text, out box23))
        {
            double L1 = double.Parse(textBox13.Text);
            double L2 = double.Parse(textBox16.Text);
            double wynik = L1 - L2;
            textBox23.Text = wynik.ToString();

            string str = textBox23.Text;
            string retString = str.Substring(0, 1);
            textBox21.Text = retString;

            if (box23 > 9)
            {
                str = textBox23.Text;
                retString = str.Substring(1, 1);
                textBox22.Text = retString;
            }
        }
    }
0 голосов
/ 26 января 2012

Не ясно, что вы пытаетесь получить, однако я бы пошел с этим

int int23 = 0;

if (!int.TryParse(textBox23.Text, out int23)) 
{
   // manage error and exit function (via exception or return), test in here also string.Empty for textBox23.
}

if (int23 > 9) 
{
    // Do What you need
}
else if (int23 < 10) 
{
    // Do What you need
}

Однако, как только вы получили переменные типа int, вы можете напрямую отформатировать их.

0 голосов
/ 26 января 2012

вы можете использовать tryParse

private void button10_Click_1(object sender, EventArgs e)
{
   Int32 IsAnumber;
if(Int32.TryParse(textBox23.Text, out IsAnumber)
{
if (IsAnumber > 9)

{
    double L1 = double.Parse(textBox13.Text);
    double L2 = double.Parse(textBox16.Text);
    double wynik = L1 - L2;
    textBox23.Text = wynik.ToString();

    string str = null;
    string retString = null;
    str = textBox23.Text;
    retString = str.Substring(0, 1);
    textBox21.Text = retString;

    str = textBox23.Text;
    retString = str.Substring(1, 1);
    textBox22.Text = retString;

}

else 
{
    double L1 = double.Parse(textBox13.Text);
    double L2 = double.Parse(textBox16.Text);
    double wynik = L1 - L2;
    textBox23.Text = wynik.ToString();

    string str = null;
    string retString = null;
    str = textBox23.Text;
    retString = str.Substring(0, 1);
    textBox21.Text = retString;

}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...