如何修复C ++上的循环

时间:2018-10-06 17:00:12

标签: c++ visual-studio for-loop while-loop

我正在做一个作业,要求用户键入状态的缩写,当它获得正确的输入时,它将显示状态的全名。我有下面的代码,但是由于某种原因,即使我输入了正确的缩写,例如TN,我仍然会收到无效的输入!这肯定是我在while循环条件下犯的一个简单错误,或者我错过了一些东西,但我似乎无法弄清楚。.希望能得到帮助!

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

int main() {

   string state;
   string KY, OH, IN, TN, WV;

   cout << "Question 1:" << endl;
   cout << "Enter state abbreviation (KY, OH, IN, TN, WV): ";
   cin >> state;

   while (state != KY && state != OH && state != IN && state != TN && state != WV) {
       cout << "Invalid Entry!";
       cout << "\nEnter state abbreviation (KY, OH, IN, TN, WV): ";
       cin >> state;
   }

   if (state == KY)
       cout << "Kentucky";
   if (state == OH)
       cout << "Ohio";
   if (state == IN)
       cout << "Indiana";
   if (state == TN)
       cout << "Tennessee";
   if (state == WV)
       cout << "West Virgnia";

   system("Pause");
   return 0;
 }

2 个答案:

答案 0 :(得分:4)

如果您未指定std::string的内容,它将被初始化为空字符串,因此您的OHKY(等等)都是空字符串。大概您想要这样的东西:

string KY = "KY", OH = "OH", IN = "IN", TN = "TN", WV = "WV";

那至少应该是朝着正确的方向前进。

答案 1 :(得分:0)

您已定义了字符串变量KY,OH等。它们与字符串“ KY”,“ OH”不同。您正在与未初始化的字符串变量进行比较。