我尝试以各种可能的方式重新定义这些变量 尝试让这条线工作。我只是举一个例子 这里代表什么令我不安。
double const FRAME_COST = 45.00;
string input;
char yes,
no;
int frames;
cout << "Do you want additional frames? Type yes/no: ";
cin >> input;
if (input == yes){
cout << "How many?"
cin >> frames;
frames = frames * FRAME_COST;
}
// The problem is in **the if statement**
// I need to use a string not a bool (according to my professor)
// I can't get the compiler to recognize the **if statement**
// I realize this isn't practical, but he always throws curve balls.
答案 0 :(得分:9)
您当前的程序有未定义的行为,因为yes
和no
是尚未初始化的字符变量,并且您在比较中使用其中一个。
要修复,请删除yes
和no
的声明(您不需要它们),然后使用字符串文字:
if (input == "yes") {
...
}
注意:您的比较可能过于严格,因为它区分大小写。它需要yes
,但不会以Yes
或YES
作为答案。要解决此问题,您可能希望在比较之前将输入字符串转换为小写。
答案 1 :(得分:4)
const string YES = "yes";
const string NO = "no";
const double FRAME_COST = 45.0;
int main()
{
string input;
double frames;
cout << "Hello World" << endl;
cin >> input;
if(input == YES)
{
cout << "How many?" << endl;
cin >> frames;
frames = frames * FRAME_COST;
cout << frames << endl;
}
return 0;
}
答案 2 :(得分:3)
只是将char
命名为“是”而另一个char
名称为“否”是不够的,尤其是因为您实际上从未向他们提供任何值。我想你打算写:
if (input == "yes") {
答案 3 :(得分:3)
input == yes
需要input == "yes"
引号让编译器知道它是字符串而不是标识符。我也认为this可能会有所帮助。
答案 4 :(得分:2)
您需要与字符串或字符数组进行比较。
if (input == yes)
此行不执行任何操作,因为yes
是一个永远不会初始化的字符指针。它应该是
if (input == "yes")
并且您不需要yes
变量(或者,您可以使用要检查的值声明一个常量字符串:例如const std::string YES("yes");
)
请注意,您可能还应考虑区分大小写。
此外,您将整数frames
乘以双FRAME_COST
(可能是为了获得总费用?)。这将导致截断的整数值,因为您将其存储在int
中。如果您希望费用以美元和美分计算,则应将其存储在double
或float
中:
double cost = frames * FRAME_COST;
答案 5 :(得分:1)
yes
和no
应该是字符串常量(如果你想让它们与输入完全匹配),const std::string
或const char*
(或自动),但是你必须得到一个价值。
double const** FRAME_COST = 45.00;
string input;
const char* yes = "yes"
const char* no = "no";
int frames;
cout << "Do you want additional frames? Type yes/no: ";
cin >> input;
if (input == yes){ // exact comparison (maybe add a space trim of input?)
cout << "How many?"
cin >> frames;
frames = frames * FRAME_COST;
}
答案 6 :(得分:0)
不是只为一个输入创建if语句,而是有一种方法可以对一个if语句使用多个输入而不必创建多个if语句呢?
例如...
string input;
cout << "Are you Bob?";
if (input == "yes", "no", "maybe"){
cout << "Sure...";
}else {
cout << "CANNOT COMPUTE";
}
每次尝试此操作时,输入都可以是任何东西,并且就像我说“是”,“否”或“也许”一样。