سؤال

while(true)
{ 
  cout << "Name: ";
  getline(cin, Name);
  if(Name == "Stop")
    break;

  cout << "Additional Name - Y/N: ";
  getline(cin, additional);
  if (additional == "Y") 
    cout << "Additional Name: ";
  getline(cin, Name2);
  else
    cout << "Location: ";
  getline(cin, Location);
  if(Location == "Stop")
    break;
}


chief.cpp: In member function ‘void BookList::Fill()’:
chief.cpp:128: error: ‘else’ without a previous ‘if’

بعد أن يدخل المستخدم الاسم الأول ، أود إعطاء خيار إدخال الاسم الثاني. إذا كانت "N" تخطي إلى الموقع ، إذا انتقل إلى Name2 ثم إلى الموقع.

هل كانت مفيدة؟

المحلول

عليك أن ترفق العبارات بين if و ال else داخل قوسين { ... }.

نصائح أخرى

تحتاج إلى إضافة أقواس هنا:

if (additional == "Y") 
     cout << "Additional Name: ";
      getline(cin, Name2);
else
     cout << "Location: ";
     getline(cin, Location);

محاولة:

if (additional == "Y") 
{
     cout << "Additional Name: ";
     getline(cin, Name2);
}
// You could have an else here, but that would make location only happen if "additional" was not "Y"

 cout << "Location: ";
 getline(cin, Location);

أظن أنك تريد دائمًا حدوث الأسطر التالية (الحصول على الموقع) ، لذلك في هذه الحالة ، لا يلزم ذلك في هذه الحالة.

تحتاج إلى إرفاق جسم if في الأقواس للتخلص من الخطأ. بمظهره ، تحتاج أيضًا إلى إرفاق else الجسم في الأقواس:

if (additional == "Y") {
  cout << "Additional Name: ";
  getline(cin, Name2);
 } else {
  cout << "Location: ";
  getline(cin, Location);
 }

يمكنك فقط تجاهل الأقواس ({ و }) حول الكتل عندما تحتوي الكتلة على بيان واحد بالضبط (شيء ينتهي مع فاصلة فاصلة (;) أو بيان آخر مع كتلة (if, for, while, ، إلخ).

على سبيل المثال ، يمكنك القيام بذلك:

while (true)
    if (foo) {
        printf("Hello, ");
        printf("world\n");
    }

او حتى

while (true)
    if (foo)
        for (i = 0; i < 10; i++) {
            printf("Hello, ");
            printf("World!\n");
        }

ولكن في الكود الخاص بك ، تحتاج إلى استخدام الأقواس منذ if يحتوي البيان على بيانين قبل else بيان. لذلك if نهاية البيان بعد cout خط.

وبالتالي ، يجب أن تبدو النتيجة النهائية مثل هذا:

if (additional == "Y") {
   cout << "Additional Name: ";
   getline(cin, Name2);
}
else {
   cout << "Location: ";
   getline(cin, Location);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top