2016-06-30 8 views
1

Ich verwendete xcode neulich und arbeitete an einem textbasierten Konversationsspiel-Ding.C++ If/Else-Anweisungsprobleme

#include <iostream> 

int main() 
{ 
    std::cout<<"Conversation simulator requires you to type in all caps for all of your replies"<<std::endl; 
    std::cout<<"Type your first and last name!"<<std::endl; 
    std::string fname = " "; 
    std::string lname = " "; 
    bool samename = false; 
    std::cin>> fname >> lname ; 
    if (fname == "MUSCLE" and lname == "MAN") 
     std::cout<< "Wow, we have the same first and last name!"<<std::endl; 
     samename = true; 
    else 
     std::cout<< fname << " "<< lname << "is a very nice name"<<std::endl; 

return 0; 
} 

nichts scheint mir ganz falsch, aber Xcode nicht, weil auf dieser Strecke laufen:

else 

es einen Ausdruck zu erwarten? Ich kann mir nicht vorstellen, was das bedeuten könnte.

+8

Einrückungen Scoping nicht machen. –

+0

Vielen Dank an alle, die meine Frage beantwortet haben. – ssleepie

+0

Hasst es nicht, wenn das passiert. Gute IDEs vermasseln den Eindruck nicht, aber es kann passieren. – doug

Antwort

3

Sie haben in Ihrer if..sexy-Anweisung Klammern vergessen.

#include <iostream> 

int main() 
{ 
    std::cout<<"Conversation simulator requires you to type in all caps for all of your replies"<<std::endl; 
    std::cout<<"Type your first and last name!"<<std::endl; 
    std::string fname = " "; 
    std::string lname = " "; 
    bool samename = false; 
    std::cin>> fname >> lname ; 
    if (fname == "MUSCLE" and lname == "MAN"){ 
     std::cout<< "Wow, we have the same first and last name!"<<std::endl; 
     samename = true; 
    } else { 
     std::cout<< fname << " "<< lname << "is a very nice name"<<std::endl; 
    } 
return 0; 
} 
9

Sie müssen Klammern, wenn Sie mehr als eine Anweisung unter if ausführen möchten. Hier ist eine Lösung, die sich für mich zusammensetzt.

#include <iostream> 

int main() 
{ 
     std::cout<<"Conversation simulator requires you to type in all caps for all of your replies"<<std::endl; 
     std::cout<<"Type your first and last name!"<<std::endl; 
     std::string fname = " "; 
     std::string lname = " "; 
     bool samename = false; 
     std::cin>> fname >> lname; 
     if (fname == "MUSCLE" and lname == "MAN") { 
       std::cout<< "Wow, we have the same first and last name!"<<std::endl; 
       samename = true; 
     } else { 
       std::cout<< fname << " "<< lname << "is a very nice name"<<std::endl; 
     } 
     return 0; 
} 
+0

Keine Notwendigkeit, überall 'std' zu schreiben. Schreiben Sie 'using namespace std;' unterhalb der Header. – Dershowitz123

5

Sie haben vergessen, die geschweiften Klammern für die if-Block:

if (fname == "MUSCLE" and lname == "MAN") { 
    std::cout<< "Wow, we have the same first and last name!"<<std::endl; 
    samename = true; 
} 
else 
    std::cout<< fname << " "<< lname << "is a very nice name"<<std::endl; 

Ohne sie nur die nächste Anweisung (die Ausgabe in Ihrem Fall) gehört zum if. Wenn Sie also das Flag in der nächsten Zeile setzen, wird else falsch angezeigt.

1

Sie vermissen Klammer:

If() { 
} else { 
} 
0

Ich glaube, man muss die Open-Close geschweiften Klammern verwenden:

if (fname == "MUSCLE" and lname == "MAN") 
{ 
    std::cout<< "Wow, we have the same first and last name!"<<std::endl; 
    samename = true; 
} 
else 
    std::cout<< fname << " "<< lname << "is a very nice name"<<std::endl;