Member 13068046 Ответов: 2

Почему я получаю ошибку"} expected" и как ее исправить?


Привет,

Я пытался написать некоторый код в папке приложений visual studio 2015 для мини-проекта. Целью поставленной задачи является создание калькулятора для уравнения теплопроводности.

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

Я сделал это, приравняв входные значения к -1.0 E-99, если не указано иное, однако, когда я попытался добавить в оператор окна сообщения фигурную скобку перед ним (строка 37), появилась ошибка "} expected".

Посмотрев его и добавив фигурные скобки повсюду в коде, чтобы попытаться избавиться от него, я все еще в растерянности.

У кого-нибудь, пожалуйста, есть решение для меня? Я был бы очень признателен Вам за любой совет.

Большое вам спасибо и с наилучшими пожеланиями

Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Heat_conduction_calculator_9
{
    public partial class Form1 : Form
    {
        double A, q, -k, T1, T2, x1, x2, Z;

        public Form1()
        {
            InitializeComponent();

            Z = -1.0E-99;
                -k = A = T1 = T2 = x1 = x2 = Z;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            x1 = double.Parse(textBox1.Text);
            T1 = double.Parse(textBox2.Text);
            x2 = double.Parse(textBox3.Text);
            T2 = double.Parse(textBox4.Text);
            k = double.Parse(textBox5.Text);
            A = double.Parse(textBox6.Text);
            if ((A >= Z) && (-k >= Z) && (x1 >= Z) && (x2 >= Z) && (T1 >= Z) && (T2 >= Z)) ;
            {
                q = (-1 * k * A * (T2 - T1) / (x2 - x1));
                textBox7.Text = q.ToString();
} //-----> line 37
            else if ((A <= Z)|(-k <= Z)|(x1 <= Z)|(x2 <= Z)|(T1 <= Z)|(T2 <= Z));
            MessageBox.Show("Invalid Input");

        }
                
    }
}

Bryian Tan

Кстати, это была опечатка в имени переменной-k ?

[no name]

Снимите - с объявления k и избавьтесь от ; в конце вашего заявления if.

2 Ответов

Рейтинг:
16

Patrice T

            if ((A >= Z) && (-k >= Z) && (x1 >= Z) && (x2 >= Z) && (T1 >= Z) && (T2 >= Z)) ;
            {
                q = (-1 * k * A * (T2 - T1) / (x2 - x1));
                textBox7.Text = q.ToString();
} //-----> line 37
            else if ((A <= Z)|(-k <= Z)|(x1 <= Z)|(x2 <= Z)|(T1 <= Z)|(T2 <= Z));
            MessageBox.Show("Invalid Input");

2 ";" в конце if строки-это ошибки, если они не являются C/C++, удалите их.

Вот ссылки на справочники книг по С и с++ авторов этих языков. Обратите внимание, что C является предком C++, поэтому знание C всегда полезно с C++.
Язык программирования Си - Википедия, свободная энциклопедия[^]
https://hassanolity.files.wordpress.com/2013/11/the_c_programming_language_2.pdf[^]
http://www.ime.usp.br/~ПФ/Керниган-Ритчи/с-Программирование-электронные книги.формат PDF[^]

Язык Программирования C++ [^]


Member 13068046

Вы были правы, в тот момент, когда я удалил их, все сработало. Большое вам спасибо!

Рейтинг:
1

takatok

У вас две проблемы:
Вы не можете назвать переменную-k. Если вы хотите, чтобы он был отрицательным от Z, вам просто нужно назвать его K и установить его в-Z.
Во-вторых, если утверждения не имеют a ; в конце их. Это фактически завершает ваше заявление if. Вот код, который должен делать то, что вы хотите:

<pre>using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Heat_conduction_calculator_9
{
    public partial class Form1 : Form
    {
        double A, q, k, T1, T2, x1, x2, Z;

        public Form1()
        {
            InitializeComponent();

            Z = -1.0E-99;
            A = T1 = T2 = x1 = x2 = Z;
            k = -Z;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            x1 = double.Parse(textBox1.Text);
            T1 = double.Parse(textBox2.Text);
            x2 = double.Parse(textBox3.Text);
            T2 = double.Parse(textBox4.Text);
            k = double.Parse(textBox5.Text);
            A = double.Parse(textBox6.Text);
            if ((A >= Z) && (-k >= Z) && (x1 >= Z) && (x2 >= Z) && (T1 >= Z) && (T2 >= Z)) 
            {
                q = (-1 * k * A * (T2 - T1) / (x2 - x1));
                textBox7.Text = q.ToString();
            } //-----> line 37
            else if ((A <= Z) | (-k <= Z) | (x1 <= Z) | (x2 <= Z) | (T1 <= Z) | (T2 <= Z)) 
            MessageBox.Show("Invalid Input");

        }

    }
}


Member 13068046

Большое спасибо! Я этого не заметил.