我最近开始用C++编程,我写了一个简单的文件来尝试和测试。它将摄氏度转换为华氏度,反之亦然。它一直给我一个关于期待"while"的错误,以及一个"('
正如我所说,我是新手,真的不知道该尝试什么。我已经将 if else 和 else 移到了与前一个 if/if else 语句的结尾大括号相同的行上。
#include <iostream>
int main()
{
int f;
int c;
char choice;
ask:do {
std::cout << "Hello welcome! Would you like to convert from C to F (a) or F to C (b)?n";
std::cin >> choice;
}
if (choice == "a") { // that if before this comment has squiggly red line
std::cout << "Great, What is the temperature in Celcius? (No decimals please)n";
std::cin >> c;
f = (c * 1.8) + 32;
std::cout << "The temp in Farenheight is " << f << "degreesn";
}
if else (choice == "b") {
std::cout << "Great, What is the temperature in Celcius? (No decimals please)n";
std::cin >> c;
c = (f / 1.8) - 32;
std::cout << "The temp in Celsius is " << c << "degreesn";
}
else {
std::cout << "Sorry that wasn't an option. Please try again.";
goto ask;
}
} // this also is squiggly
我希望它输出 c 到 f 的数量,反之亦然,但它不会运行,它说:
预计"一会儿" 18 ,5
预期为"(" 42 ,1
这里的代码有一个语法错误:
do {
std::cout << "Hello welcome! Would you like to convert from C to F (a) or F to C (b)?n";
std::cin >> choice;
}
do
关键字需要与while
配对,因为循环do
...while
而不仅仅是do
.因此,例如,您可以说类似
do {
std::cout << "Hello welcome! Would you like to convert from C to F (a) or F to C (b)?n";
std::cin >> choice;
} while (!isValidInput(choice));
其中isValidInput
是验证输入的一些帮助程序函数。
所以换句话说,问题不在于你不能在这里像使用do
那样多地使用if
语句......while
循环不完整。
这里还有一些其他语法错误。例如,你不能说if else
,尽管else if
是完全可以的。另一个问题:在C++中,双引号用于字符串,而单引号用于字符,因此choice == "b"
形式的比较不会编译,因为您正在比较char
和字符串。修复上述错误后,这些错误可能会浮出水面。
最后一点,虽然goto
在C++确实是合法的,但它通常不赞成其他选项,如常规循环样式。如果您遵循上述方法,让循环继续,直到获得有效的输入,那么您应该能够消除将您带回请求输入点的goto
。
希望这有帮助!
do
是 c++ 中的一个循环。具体来说,它是do … while
循环的一部分。它希望您阐明在满足条件之前应该执行循环多长时间(do... while
循环与循环不同while
因为它无论如何都至少执行一次代码)。
一个///
您的do
不会将整个程序括在大括号中,因此如果您不尝试循环整个程序,那么您可能根本不需要do
。简单制作
std::cout << "Hello welcome! Would you like to convert from C to F (a) or F to C (b)?n";
std::cin >> choice;
B
///如果要循环整个程序,do
之后的大括号必须捕获所有内容并以while
完成。在这种情况下,您可以删除goto
语句;这个答案可以解释为什么你可能想要避免这个使用 goto 有什么问题?.
例如
bool loop = true;
do {
// your program
} while (loop); // this will loop while "loop" variable continues to be true
然后,您可以在循环中的某个位置设置一个条件,该条件更改loop = false
以中断循环,例如询问用户是否要继续。
///我注意到你的代码的其他一些事情:
char
被分配了带有'
的值,并附注"
。
if else
不正确,而是else if (…