错误在我的代码,谁能解释错了

Error in my code, can anyone explain whats wrong?

本文关键字:能解释 错了 代码 我的 错误      更新时间:2023-10-16

我是c++的新手,我正在编写一个程序,但在第39行,它说错误'else'没有前面的'if',但我确实有前面的if。有人对我做错了什么有任何意见吗?这是我的程序代码。谢谢。

1 #include <fstream>
2 #include <iostream>
3 #include <cstdlib>
4 using namespace std;
5 int main()
6 { 
7 //Declarations
8     ifstream masterFile;
9     ifstream transactionFile;
10    ofstream newMasterFile;
11    double mClientNumber, mtotalClientCost, tClientNumber, titemClientCost;
12    string mClientfName, mClientlName;
13 cout << "Master File Updating Starting" ;
14 masterFile.open("Master.rtf");
15 transactionFile.open("Transaction.rtf");
16 newMasterFile.open("newMaster.rtf");
17 masterFile >> mClientNumber;
18 masterFile >> mClientfName;
19 masterFile >> mClientlName;
20 masterFile >> mtotalClientCost;
21 transactionFile >> tClientNumber;
22 transactionFile >>titemClientCost;
23 while ( transactionFile.eof() )
24 {
25     while (( masterFile.eof()) && (mClientNumber < tClientNumber))
26     {
27         newMasterFile << mClientNumber << endl;
28         newMasterFile << mClientfName << endl;
29         newMasterFile << mClientlName << endl;
30         newMasterFile << mtotalClientCost << endl;
31         masterFile >> mClientNumber;
32         masterFile >> mClientfName;
33         masterFile >> mClientlName;
34         masterFile >> mtotalClientCost;
35     }
36     if (masterFile.eof());
37    {
38         cout << "Error Client ID: " << tClientNumber << " not in Master File." ;
39     else if (mClientNumber == tClientNumber);
40         mtotalClientCost = mtotalClientCost + titemClientCost;
41         newMasterFile << mClientNumber << endl;
42         newMasterFile << mClientfName << endl;
43         newMasterFile << mClientlName << endl;
44         newMasterFile << mtotalClientCost << endl;
45         masterFile >> mClientNumber;
46         masterFile >> mClientfName;
47         masterFile >> mClientlName;
48         masterFile >> mtotalClientCost;
49     else if (mClientNumber > tClientNumber);
50         cout << "Error Client ID: " << tClientNumber << " not in Master File." ;
51     }
52     transactionFile >> tClientNumber;
53     transactionFile >> titemClientCost;
54 }
55 while (masterFile.eof())
56 {
57         newMasterFile << mClientNumber << endl;
58         newMasterFile << mClientfName << endl;
59         newMasterFile << mClientlName << endl;
60         newMasterFile << mtotalClientCost << endl;
61         masterFile >> mClientNumber;
62         masterFile >> mClientfName;
63         masterFile >> mClientlName;
64         masterFile >> mtotalClientCost;
65 }
66 cout << "Master File Updating Complete" ;
67
68 masterFile.close();
69 transactionFile.close();
70 newMasterFile.close();
71
72   system("pause");
73   return 0;
74 }
if (masterFile.eof());
                  //^^this ; here effectively terminates your if block and 
                 //does not have a closing } before else

类似的问题可以在这里找到:

if (mClientNumber == tClientNumber);
                                //^^another line below same problem

在所有if语句中,您都添加了不必要的;

if (masterFile.eof());{
//                   ^ this semicolon is not supposed to be there

;将终止if语句。

应该这样做:

if (masterFile.eof()){

同样,您没有关闭if语句中的第一个括号。所以最终产品应该是这样的:

if (masterFile.eof()){
    //if body
}else if (*next condition*){
    //else if body
}

等等…欢呼声

首先在if和else if语句后面加一个分号

如果(masterFile.eof ());

else if (mClientNumber == tClientNumber);

Rempve他们。

If不考虑这个错别字,因为else If前面没有If语句。相反,它被放入if语句

的复合语句中。
if (masterFile.eof());
{
     cout << "Error Client ID: " << tClientNumber << " not in Master File." ;
     else if (mClientNumber == tClientNumber);

也许你的意思是:

if (masterFile.eof());
{
     cout << "Error Client ID: " << tClientNumber << " not in Master File." ;
}
else if (mClientNumber == tClientNumber);

if (masterFile.eof());
{
     cout << "Error Client ID: " << tClientNumber << " not in Master File." ;
     if (mClientNumber == tClientNumber);

您在几个地方忘记了{}。将第36-51行改为

36    if (masterFile.eof())
37    {
38         cout << "Error Client ID: " << tClientNumber << " not in Master File." ;
39    } else if (mClientNumber == tClientNumber){
40         mtotalClientCost = mtotalClientCost + titemClientCost;
41         newMasterFile << mClientNumber << endl;
42         newMasterFile << mClientfName << endl;
43         newMasterFile << mClientlName << endl;
44         newMasterFile << mtotalClientCost << endl;
45         masterFile >> mClientNumber;
46         masterFile >> mClientfName;
47         masterFile >> mClientlName;
48         masterFile >> mtotalClientCost;
49     } else if (mClientNumber > tClientNumber){
50         cout << "Error Client ID: " << tClientNumber << " not in Master File." ;
51     }