我的C++文件期望用'while'代替 if。最后,它预计会出现'('



我最近开始用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 (…

最新更新