我的代码至少有2个问题,但我会从这个问题开始。
以下代码似乎无法正常运行:
cout<<"Vill du mata in en post till? (ja/nej)"<<endl; //I'm asking if the user wants to run the for-loop one more time or brake with ja(yes) or nej(no).
cin>>svar;
if (svar == ja)
{
return 0;
}
问题在于,如果用户回答“否”,则不制动,而是通过for循环运行而不“运行”或“执行”cin>>
行。
我做了一些故障排除,并发现如果我将if (svar == ja)
更改为if (svar != nej)
它会制动for循环,但问题是即使我输入了ja(是)或其他任何内容...
Heres是完整的代码,感谢您提供的任何帮助:
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
struct telefonbok
{
string namn;
string nummer;
};
int main()
{
int ja, nej;
telefonbok post[10];
bool svar; //behövs för frågan om man vill fortsätta.
for (int i=0; i<10; i++)
{
cout<<"Lagg till en post i telefonboken."<<endl;
cout<<"Ange personens namn: "<<endl;
cin>>post[i].namn;
cout<<"Ange personens nummer :"<<endl;
cin>>post[i].nummer;
cout<<"Vill du mata in en post till? (ja/nej)"<<endl;
cin>>svar;
if (svar == ja) //stoppar slingan om man svarar nej
{
return 0;
}
}
system("PAUSE");
return 0;
}
答案 0 :(得分:3)
变量ja
和nej
未初始化。将svar
与它们进行比较是徒劳的。
答案 1 :(得分:3)
Svar应该是一个字符串(因为您希望用户输入字符串“ja”或“nej”,而不是代码所需的整数),您应该检查"nej"
而不是"ja"
考虑你问的问题。如果您只想退出循环而不是函数,请使用break
:
// ...
string svar = "";
for (int i=0; i<10; i++)
{
// ...
cout<<"Vill du mata in en post till? (ja/nej)"<<endl;
cin >> svar;
if (svar == "nej")
{
return 0;
// If you only want to exit the loop and not the function you can use:
// break;
}
}
答案 2 :(得分:1)
查看代码,很明显您正在尝试将字符串与未初始化的int ja
进行比较。如果要将svar与将返回有意义值的值进行比较,则需要将字符串与字符串进行比较,即
if (svar == "ja")
代替if (svar == ja)
。
我无法在代码中看到使用整数“ja”和“nej”的其他任何地方。他们的目的是什么?